iOS开发针对苹果新系统iOS26的兼容适配

1. UITabBarButtonItem液态玻璃效果

兼容处理:

第一种方式(不推荐):把所有的UITabBarButtonItem关闭液态玻璃效果:

objectivec 复制代码
    if (@available(iOS 26.0, *)) {
        self.navigationItem.rightBarButtonItem.hidesSharedBackground = YES;
        self.navigationItem.leftBarButtonItem.hidesSharedBackground = YES;
    } else {
        // Fallback on earlier versions
    }

第二种方式:所有导航栏按钮全部采用UITabBarButtonItem,支持液态玻璃效果。

2. 采用UILayoutFittingExpandedSize设置自定义的navigationItem.titleView的内容尺寸,在iOS26上高度偏大,高度变为屏幕的高度,预期是高度应该为导航栏的高度;

原因:在iOS26之前UILayoutFittingExpandedSize最大尺寸限制在导航栏范围内,而在iOS26则允许充斥整个屏幕:

objectivec 复制代码
- (CGSize)intrinsicContentSize { return UILayoutFittingExpandedSize; }

兼容处理:

修改intrinsicContentSize,指定titleView的尺寸大小为导航栏大小:

objectivec 复制代码
#define SCREEN_WIDTH ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)]?[UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale:[UIScreen mainScreen].bounds.size.width)

- (CGSize)intrinsicContentSize { return CGSizeMake(SCREEN_WIDTH, 44); }

3、UITabBarController调用self.setValue(yourTabBar, forKey: "tabBar")自定义tabBar失效

原因:iOS 26 之后对 UITabBarController 的 KVC 注入限制,导致无效,但不会crash

兼容处理:改为使用系统的UITabBarItem组件,能够支持新系统的液态玻璃效果

相关推荐
笑尘pyrotechnic21 小时前
[iOS原理] Block的本质
ios·objective-c·cocoa
TheNextByte11 天前
如何从 iPhone 发送大型音频文件
ios·iphone
TheNextByte11 天前
如何清理 iPhone 应用崩溃日志:简单有效的指南
ios·cocoa·iphone
岁月向前2 天前
Jenkins实现iOS自动化打包
ios
GokuCode3 天前
【GO高级编程】05.类的扩展与复用
golang·embedding·xcode
2501_915909063 天前
手机崩溃日志导出的工程化体系,从系统级诊断到应用行为分析的多工具协同方法
android·ios·智能手机·小程序·uni-app·iphone·webview
郑州光合科技余经理3 天前
技术视角:海外版一站式同城生活服务平台源码解析
java·开发语言·uni-app·php·排序算法·objective-c·生活
2501_915106323 天前
App HTTPS 抓包实战解析,从代理调试到真实网络流量观察的完整抓包思路
网络协议·http·ios·小程序·https·uni-app·iphone
要站在顶端3 天前
iOS自动化测试全流程教程(基于WebDriverAgent+go-ios)
开发语言·ios·golang
2501_916008893 天前
深入理解 iPhone 文件管理,从沙盒结构到开发调试的多工具协同实践
android·ios·小程序·https·uni-app·iphone·webview