这是适配
iOS 26
的笔记,并非介绍新功能和API。陆续更新,发现一个就写一个...
全屏返回手势
iOS 26 的导航控制器navigationController
会自带全屏返回手势:interactiveContentPopGestureRecognizer
,整个控制器View的区域都可以响应返回手势(相当于把FDFullscreenPopGesture直接内置了🤫),并且会自动识别手势冲突的情况,例如碰到了UIScrollView
就会自动失效。
但是如果在诸如touchesMoved
方法做一些手势响应处理的话就不行了,会触发返回手势的,这种情况就只能手动关闭了:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if #available(iOS 26.0, *) {
navigationController?.interactiveContentPopGestureRecognizer?.isEnabled = false
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if #available(iOS 26.0, *) {
navigationController?.interactiveContentPopGestureRecognizer?.isEnabled = true
}
}
- 或者在手势代理方法里面按照自己的条件开启或关闭。
PS:这个全屏返回手势可以不断触发的哦,意思是在当前控制器返回的过程中还可以继续滑,上一个控制器也能接着一起返回(以前动画过程中无法响应手势),也就是说只要滑得快就能一下子回到根控制器,要注意一下。
UIScrollView的边缘效果
iOS 26 UIScrollView
会自带边缘效果:
滚动时会在边缘处自动带上一些模糊效果以突出导航栏元素,是个很好的视觉效果。
不过不知道为什么通过代码对scrollView
进行形变(例如旋转和缩放),这个边缘效果也会自动出现(可能是Beta版的原因)!这对我的裁剪工具影响极大🤬:
好在可以关闭这个边缘效果:
if #available(iOS 26.0, *) {
scrollView.topEdgeEffect.isHidden = true
}
Liquid Glass 液态玻璃
iOS 26 之后系统常用控件都会采用新的液态玻璃UI,例如UINavigationBar
和UITabBar
等,并且是【强制性】的!。
不过目前可以暂时关闭(毕竟需要时间去好好适配🥹),只要在info.plist
加上这一项即可:
<key>UIDesignRequiresCompatibility</key>
<true/>
但是在WWDC上也说了:
- 也就是说最多只给一年时间(死缓😑)。
如果实在不想用或者不够时间改的话,其实大部分都还好,大体布局都差不多,况且一般都是用自定义的吧,可能都用不着。
但是!UITabBar
估计就很多人都用着,这个是完全大变样,如果是自定义的tabBar
就更麻烦了。
- 第一种通过设置私有属性
tabBar
修改成自定义tabBar
,会被直接干没,估计因为你目前的自定义tabBar
不是液态玻璃:
- 另一种是在系统
tabBar
上添加自定义tabBar
,虽然能看到,但是已经变成个纯摆设了,因为手势响应都被系统tabBar
拦截了,而且触碰时还自带了液态玻璃的交互效果:
- 还有像以前那种在中间放个大按钮的方式也不行了,根本无法响应。
事已至此,看来真的只能去适配新的设计了。对我来说挺好的🙃,换一种风格,有新鲜感,就是学习成本有点高😤。
发现个宝藏Demo:GlassExplorer,作者用了OC的黑魔法让我们去调试不同的玻璃参数,可以更好地去了解各种玻璃效果~(注意修改的都是私有属性,可别拿去发版...)
陆续更新...
发现一个写一个😇