使用Xcode16打包后,App在暗夜模式下,iOS18 切换Tabbar的item,会有一根白色线条闪过。

一. 背景

使用Xcode16打包后,App在暗夜模式下,切换Tabbaritem,会有一根白色线条闪过。

二. 分析

因为之前版本一直没有这个问题,是使用了Xcode16打包后,然后在iOS18系统上才会出现,一开始以为是UITabbar顶部的分割线导致的,但查看代码UITabbar顶部的分割线已经移除,查看图层,由于闪现也看不到任何东西。

因此通过代码逐步屏蔽并设置各个图层颜色为红色的的方式,逐步排查,最终确定了,这根白线是由UINavigationController引起的,因此查阅资料了解到:

iOS18 引入了新的 UITabBarController 切换动画(如缩放效果),可能在动画过程中短暂暴露底层视图(如 UINavigationController 的根视图背景色)。若 UINavigationController 的背景色与 UITabBar 差异较大,则会出现"闪现"现象。

而我们项目设置的UINavigationControllerview的背景颜色固定是白色,当处于暗夜模式的时候,也没有将UINavigationControllerview的背景颜色改为黑色,因此导致了暗夜模式下,iOS18系统上UITabbar切换出现白色线闪现问题。

三. 治理

该问题的治理有两种方案:

方案一

  • 在暗夜模式想将UINavigationControllerview的背景色也改为暗夜模式下的颜色,这样颜色一致,切换的时候,就不会出现白色线闪现问题。

方案二

  • 如果禁用UITabbar点击的切换动画,来禁止掉iOS18系统UITabBarController的切换动画
ini 复制代码
 // 方法1:包裹切换操作以禁用动画
UIView.performWithoutAnimation {
    tabBarController.selectedIndex = targetIndex
}
相关推荐
美狐美颜SDK开放平台15 小时前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
wuxianda103016 小时前
苹果App上架4.3a被拒解决方案汇报总结
ios·uni-app·objective-c·cocoa·苹果上架·4.3a
SameX1 天前
用 SpriteKit 做了个存钱罐 App,30 枚硬币同时掉帧率直接崩了
ios
for_ever_love__1 天前
UI学习:单例传值
学习·ui·ios·objective-c
for_ever_love__1 天前
UI学习:通知传值
学习·ui·ios·objective-c
2501_915106321 天前
在Mac上搭建iOS开发环境的详细步骤与注意事项
ide·vscode·macos·ios·个人开发·swift·敏捷流程
想个名字想老半天1 天前
uni 离线打包 ios,适用于自定义 ios系统最低适配 保姆级教程
macos·ios·cocoa
No Silver Bullet1 天前
iOS开发进阶(二十四):一文读懂iOS发布证书,描述文件到期后,在工程中如何进行替换
ios
库奇噜啦呼1 天前
【iOS】源码学习-类与对象底层原理
学习·ios·cocoa