UIModalPresentationFullScreen 导致渐变图层异常
iOS 13 之前模态弹出一个页面默认是全屏展示,从 iOS 13 开始,如果不特意指定控制器的 modalPresentationStyle
属性,模态出的页面会是卡片式、非全屏,全屏的话需要指定:
1 | vc.modalPresentationStyle = UIModalPresentationFullScreen; |
这一点相信很多年年做适配的同行早就知道了,所以这不是小咪要说的重点。
小咪要说的是今天修改一个极老的项目,L 页面是模态弹出的,所以用新的编译环境打包的话是一定要适配上面这一项的。然后又出现新的问题了…客户要求 L 页的背景是渐变色,当时采用的是下面的方式绘制一层渐变图层,加到 L 页的 View 上。
1 | CAGradientLayer *gl = [CAGradientLayer layer]; |
但是修改 modalPresentationStyle
以后,渐变图层跑到了最上面,也就是遮挡住了 L.view 的所有子控件,子控件的事件响应也被阻断了…临时的解决办法是手动把它往后挪了一层:
1 | CALayer *temp = [self.view.layer.sublayers lastObject]; |
视觉效果和响应上倒是恢复了,但是什么原因导致的图层顺序变化呢…小咪晕了…有遇到同样问题的小伙伴吗?