1. UITabBarButtonItem 液态玻璃效果
兼容处理:
第一种方式(不推荐):把所有的 UITabBarButtonItem 关闭液态玻璃效果:
if (@available(iOS 26.0, *)) {
self.navigationItem.rightBarButtonItem.hidesSharedBackground = YES;
self.navigationItem.leftBarButtonItem.hidesSharedBackground = YES;
} else {
// Fallback on earlier versions
}
第二种方式:所有导航栏按钮全部采用 UITabBarButtonItem,支持液态玻璃效果。
第三种方式:降低 Xcode 版本到 Xcode 25 及以下版本,然后再打包。
第四种方式:使用兼容模式显示传统 UI 风格,也就是取消 TabBar 液态玻璃效果:
打开 info.plist,添加一个 Boolean 键值对,取消液态玻璃效果,添加完成后重新运行,UITabBar 恢复旧的样式:
<key>UIDesignRequiresCompatibility</key>
<true/>
2. 采用 UILayoutFittingExpandedSize 设置自定义的 navigationItem.titleView 的内容尺寸
在 iOS 26 上高度偏大,高度变为屏幕的高度,预期是高度应该为导航栏的高度;
原因:在 iOS 26 之前 UILayoutFittingExpandedSize 最大尺寸限制在导航栏范围内,而在 iOS 26 则允许充斥整个屏幕:
- (CGSize)intrinsicContentSize { return UILayoutFittingExpandedSize; }
兼容处理:
修改 intrinsicContentSize,指定 titleView 的尺寸大小为导航栏大小:
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
- (CGSize)intrinsicContentSize { return CGSizeMake(SCREEN_WIDTH, 44); }
3. UITabBarController 调用 setValue:forKey:自定义 tabBar 失效
原因:iOS 26 之后对 UITabBarController 的 KVC 注入限制,导致无效,但不会 crash。
兼容处理:
方案 1:使用兼容模式显示传统 UI 风格,也就是取消 TabBar 液态玻璃效果:
打开 info.plist,添加一个 Boolean 键值对,取消液态玻璃效果,添加完成后重新运行,UITabBar 恢复旧的样式:
<key>UIDesignRequiresCompatibility</key>
<true/>
方案 2:改为使用系统的 UITabBarItem 组件,能够支持新系统的液态玻璃效果。
方案 3:降低 Xcode 版本到 Xcode 25 及以下版本,然后再打包。
4. 创建一个由 URL 标识的代表任何资源的 asset 对象时报错
AVAssetExportSessionStatusFailed: Error Domain= Code= UserInfo={ = { Error Domain= Code= }, =发生未知错误(), =file:

