跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Objective-C大前端

iOS 开发:iOS 26 系统 UITabBar 液态玻璃效果与 WiFi SSID 获取兼容适配

总结了 iOS 26 系统下的主要兼容性问题及解决方案。包括:1. UITabBar 液态玻璃效果的兼容处理,可通过配置 Info.plist 或调整代码实现;2. navigationItem.titleView 在 iOS 26 下高度异常问题,需重写 intrinsicContentSize 限制高度;3. UITabBarController 自定义 tabBar 的 KVC 注入被限制,建议使用系统组件或兼容模式;4. AVAssetExportSession 转码报错,因权限收紧需先拷贝视频至沙盒再处理;5. WiFi SSID 获取方式变更,CNCopySupportedInterfaces 失效,需改用 NEHotspotNetwork 并申请相应权限。

狂少发布于 2026/4/6更新于 2026/7/2758 浏览

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. 自定义 navigationItem.titleView 尺寸问题

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

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

- (CGSize)intrinsicContentSize { return UILayoutFittingExpandedSize; }

兼容处理:

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

#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 KVC 注入失效

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

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

兼容处理:

方案 1: 使用兼容模式显示传统 UI 风格,也就是取消 TabBar 液态玻璃效果: 打开 info.plist,添加一个 Boolean 键值对,取消液态玻璃效果,添加完成后重新运行,UITabBar 恢复旧的样式:

<key>UIDesignRequiresCompatibility</key>
<true/>

方案 2:改为使用系统的 UITabBarItem 组件,能够支持新系统的液态玻璃效果。

方案 3:降低 Xcode 版本到 Xcode 25 及以下版本,然后再打包。

4. AVAssetExportSession 转码失败

创建一个由 URL 标识的代表任何资源的 asset 对象时报错:

AVAssetExportSessionStatusFailed: Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成" UserInfo={ NSUnderlyingError=0x1586626a0 { Error Domain=NSOSStatusErrorDomain Code=-16979 "(null)" }, NSLocalizedFailureReason=发生未知错误(-16979), NSURL=file:///var/mobile/Media/DCIM/100APPLE/IMG_0426.MOV, NSLocalizedDescription=这项操作无法完成 }

原因:AVAssetExportSession -11800 / -16979 转码失败,权限不足、文件不可读。创建一个由 URL 标识的代表任何资源的 asset 对象时,传入的 originFilePath 示例:file:///var/mobile/Media/DCIM/100APPLE/IMG_0426.MOV,没有读的权限,因为 iOS 26 对相册视频读取权限收紧。

代码示例:

//originFilePath 示例:file:///var/mobile/Media/DCIM/100APPLE/IMG_0426.MOV
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:originFilePath options:nil];

兼容处理:先将相册的视频拷贝到 App 沙盒临时目录,然后再去创建资源对象 AVURLAsset。

[self copyVideoToSandbox:originFilePath completion:^(NSURL *localUrl) {
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:localUrl options:nil];
}];

- (void)copyVideoToSandbox:(NSURL *)originUrl completion:(void (^)(NSURL *localUrl))completion {
    NSString *temp = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tempVideo.mov"];
    NSURL *localUrl = [NSURL fileURLWithPath:temp];
    NSFileManager *fm = [NSFileManager defaultManager];
    if ([fm fileExistsAtPath:temp]) {
        [fm removeItemAtPath:temp error:nil];
    }
    NSError *err = nil;
    BOOL ok = [fm copyItemAtURL:originUrl toURL:localUrl error:&err];
    if (!ok || err) {
        NSLog(@"拷贝失败:%@", err);
        completion(nil);
        return;
    }
    completion(localUrl);
}

5. WiFi SSID 获取方式变更

通过 CNCopySupportedInterfaces 获取 wifi ssid 的方式已失效:

class func getWifiSSID() -> String? {
    var wifiName: String?
    let wifiInterfaces = CNCopySupportedInterfaces()
    if wifiInterfaces != nil {
        let interfaceArr = CFBridgingRetain(wifiInterfaces) as! [String]
        if interfaceArr.count > 0 {
            let interfaceName = interfaceArr[0] as CFString
            let ussafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
            if ussafeInterfaceData != nil {
                let interfaceData = ussafeInterfaceData as! [String: Any]
                wifiName = interfaceData["SSID"] as? String ?? ""
            } else {
                return nil
            }
        }
    }
    return wifiName
}

原因:iOS 26 不再推荐使用 CNCopySupportedInterfaces,在 iOS 26 将返回空值。

兼容处理:Capabilities 添加 Access WiFi Information 权限;通过 CLLocationManager 确保有定位权限,然后使用 NEHotspotNetwork 获取 wifi ssid:

NEHotspotNetwork.fetchCurrent { curNetwork in
    block(curNetwork?.ssid ?? "")
}

目录

  1. 1. UITabBarButtonItem 液态玻璃效果
  2. 2. 自定义 navigationItem.titleView 尺寸问题
  3. 3. UITabBarController KVC 注入失效
  4. 4. AVAssetExportSession 转码失败
  5. 5. WiFi SSID 获取方式变更
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • nnWNet: 重新思考 Transformer 在生物医学图像分割中的应用及统一评估基准
  • AI 大模型驱动 Web UI 自动化测试:Playwright 与 RobotFramework 实践
  • SLAM Toolbox 机器人智能建图技术详解
  • Python PySide6 跨平台桌面应用开发实战
  • Java 后端开发从 IDEA 迁移到 Trae 的实战体验与配置指南
  • C++ 配置文件管理:yaml-cpp 实战指南
  • 近半年无人机与大模型结合的 8 项核心研究
  • 中小团队低成本搭建项目管理系统:Ubuntu 下 Dootask 私有化部署实战
  • WebView 并发初始化竞争风险分析
  • 基于 React 与 MediaPipe 的数字塔罗占卜系统设计与实现
  • 在 Cursor 中配置并使用 MCP 服务指南
  • 昇腾平台 Llama-2-7b 大模型深度测评与部署方案
  • AI 写作中如何避免参考文献“幻觉”问题
  • 【PX4+ROS完全指南】从零实现无人机Offboard控制:模式解析与实战
  • 豆包 Seedream 4.0 多图融合与主体一致性技术解析
  • OpenClaw 低代码 AI 平台:企业数字化落地的技术路径
  • IDEA 插件 Trae AI 使用指南
  • Qwen 3.5 MoE 本地部署:用 Ollama 跑起来并调用 API
  • QGIS 到 WebGIS:网络瓦片地图离线化与可视化实战
  • 大语言模型 (LLM) 产品开发流程参考

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online