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

iOS 新系统适配:TabBar 液态玻璃效果与 WiFi SSID 获取方案

iOS 新系统适配涉及 TabBar 样式回退、导航栏尺寸异常及资源权限问题。通过 Info.plist 配置可恢复传统 UI 风格;修正 intrinsicContentSize 解决高度溢出;视频转码需先拷贝至沙盒以规避权限限制;WiFi SSID 获取需切换至 NEHotspotNetwork 并申请定位权限。

萤火微光发布于 2026/4/8更新于 2026/7/2441 浏览
1. UITabBarButtonItem 液态玻璃效果兼容

在 iOS 26 及以上版本中,TabBar 和导航栏按钮默认会启用液态玻璃效果。如果业务需要保持传统 UI 风格,有几种处理方式。

推荐方案:Info.plist 配置 打开 Info.plist,添加一个 Boolean 类型的键值对 UIDesignRequiresCompatibility,设置为 true。这样 TabBar 会自动恢复旧版样式,无需修改代码。

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

其他备选方案:

  • 关闭共享背景:通过代码设置 hidesSharedBackground = YES,但这会影响部分原生交互体验。
  • 降级 Xcode:将开发环境降至 Xcode 25 及以下再打包,属于临时规避手段。
  • 使用系统组件:改用标准的 UITabBarItem 组件,通常能更好地支持新系统的视觉效果。
2. NavigationItem TitleView 尺寸异常

在 iOS 26 之前,UILayoutFittingExpandedSize 会将内容限制在导航栏高度内。但在新系统中,它允许内容充斥整个屏幕,导致 titleView 高度异常变大。

原因分析 系统放宽了布局约束的最大尺寸限制,导致 intrinsicContentSize 返回的尺寸超出预期。

解决方案 重写 intrinsicContentSize,强制指定为导航栏标准高度(如 44pt)。

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

iOS 26 加强了对 UITabBarController 的 KVC 注入限制,直接调用 setValue(_:forKey:) 自定义 tabBar 可能失效(虽不会 Crash)。

应对策略

  • 优先使用 Info.plist 配置:同第 1 点,通过兼容性模式回退 UI 风格。
  • 切换至系统组件:尽量使用系统提供的 UITabBarItem,避免底层注入。
  • 降级处理:若必须保留自定义逻辑,考虑降低构建时的 Xcode 版本。
4. AVAssetExportSession 转码失败

遇到错误码 -11800 或 -16979 时,通常是因为权限不足或文件不可读。iOS 26 收紧了相册视频读取权限,直接传入 DCIM 路径创建 AVURLAsset 会失败。

解决步骤 先将视频拷贝到 App 沙盒临时目录,再基于本地路径创建资源对象。

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

// 后续使用 localUrl 创建 AVURLAsset
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:localUrl options:nil];
5. WiFi SSID 获取方式变更

CNCopySupportedInterfaces 在 iOS 26 已不再推荐使用,直接调用会返回空值。

新方案 需要在 Capabilities 中添加 Access WiFi Information 权限,并确保用户授予定位权限。随后使用 NEHotspotNetwork 获取当前网络信息。

class func getWifiSSID() -> String? {
    NEHotspotNetwork.fetchCurrent { curNetwork in
        // 根据实际业务需求处理 block
        return curNetwork?.ssid ?? ""
    }
}

注意:此方法依赖系统 API,需确保目标设备支持且权限配置正确。

目录

  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

更多推荐文章

查看全部
  • Python 爬虫实现豆瓣电影数据采集实战
  • Windows 系统下 Python 环境搭建与安装指南
  • 大语言模型学习路线:从基础理论到项目实战
  • 基于腾讯云 HAI 与 DeepSeek 构建个人网页
  • 网络安全漏洞挖掘实战经验与入门指南
  • 前端监控体系搭建:错误捕获、性能分析与用户行为追踪
  • 国内 AI 开发常用:HuggingFace 镜像站 hf-mirror.com 高效下载与避坑指南
  • Xilinx FPGA 开发:Vivado 流与 Vitis 流深度解析
  • 读书笔记:精准努力——重新审视社交成本
  • 前端面试核心考点整理:HTML、JS、框架及网络协议详解
  • DeepSeek-R1-Distill-Llama-8B 部署:Docker Compose 编排多模型推理服务
  • GitHub 精选:LLM 管道优化与 AI 聊天框架工具指南
  • 2026 AI 编程助手排行榜:文心快码、Copilot 与 Cursor 深度评测
  • 爬虫实战:传统编程与 AIGC 提示词工程对比
  • Stable Diffusion 图生图功能入门详解
  • 在 macOS 上给 Steam 游戏配置手柄
  • 非原生应用技术全解析:Web、混合与跨平台
  • Python IDLE 汉化方法
  • kubectl port-forward 端口转发配置与突破本地限制
  • 【火】Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

相关免费在线工具

  • 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