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组件,能够支持新系统的液态玻璃效果

相关推荐
for_ever_love__30 分钟前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
songgeb13 小时前
Compositional layout in iOS
ios·swift·设计
UTF_814 小时前
iOS动画浅谈
ios·客户端
2501_9160074715 小时前
HTTPS 抓包的流程,代理抓包、设备数据线直连抓包、TCP 数据分析
网络协议·tcp/ip·ios·小程序·https·uni-app·iphone
eleven409617 小时前
穿透内容审查与阻断:基于 DNS TXT 记录的动态服务发现与客户端安全加固实践
网络协议·ios·app
游戏开发爱好者817 小时前
React Native iOS 代码如何加密,JS 打包 和 IPA 混淆
android·javascript·react native·ios·小程序·uni-app·iphone
2501_9160074717 小时前
在非 Xcode 环境下完成苹果开发编译的记录 iOS 编译与调试
ide·vscode·ios·cocoa·个人开发·xcode·敏捷流程
1024小神17 小时前
记录xcode项目swiftui配置APP加载启动图
前端·ios·swiftui·swift
2501_9159184118 小时前
iOS mobileprovision 描述文件管理,新建、下载和内容查看
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张18 小时前
iOS 应用程序使用历史记录和耗能记录怎么查?
android·ios·小程序·https·uni-app·iphone·webview