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

相关推荐
tiantian_cool11 小时前
Claude Code 四大核心技能使用指南
ios
冰淇淋真好吃15 小时前
iOS实现 WKWebView 长截图的优雅方案
ios
TG_imqfxt66618 小时前
虚拟机下安装苹果系统,虚拟机下如何实现协议群发iMessage?
python·objective-c
前端不太难20 小时前
Flutter / RN / iOS,在长期维护下的性能差异本质
flutter·ios
搜狐技术产品小编20232 天前
精通 UITableViewDiffableDataSource——从入门到重构的现代 iOS 列表开发指南
ios·重构
tangweiguo030519872 天前
SwiftUI 状态管理完全指南:从 @State 到 @EnvironmentObject
ios
声网2 天前
如何用 Fun-ASR-Nano 微调一个「听懂行话」的语音模型?丨Voice Agent 学习笔记
笔记·学习·xcode
Digitally2 天前
如何轻松地将文件从 PC 传输到 iPhone
ios·iphone
iosTiov2 天前
当IPA遇见信任:解密ios生态中“签名”的真正力量
ios·团队开发·苹果签名·稳定
TheNextByte12 天前
如何将 iMessage 保存到外部硬盘驱动器
macos·objective-c·cocoa