震惊:苹果手机电池栏“黑白无常”

京东云开发者
• 阅读 209

前言:

当程序员👨🏻‍💻遇到难以解决的bug时,大家都会说同样的口头禅:真是见了鬼了(建国后不可以)

现象:

手机电池栏左黑右白,如下图



震惊:苹果手机电池栏“黑白无常”





👈🏻左边的时间是黑色的字体,右边的信号和电池是白色的字体👉🏻,这种感觉就像电池栏在呼喊:

我与你之间虽只差一个灵动岛的距离,却已是黑白相隔

心路历程:

初步断定应该是UIStatusBarStyle的设置问题,查看App的infoplist文件发现确实有 View controller-based status bar appearance = YES的相关设置,有特殊需要的界面就需要自己手动处理一下

- (UIStatusBarStyle)preferredStatusBarStyle {
    if (@avaliable(iOS 13.0,*)) {
        return XXXX;
    } else {
        return XXXXX;
    }
    return XXXXXXX;
}

但是本着谁污染谁治理的原则,我没有特殊的场景我不处理,别的地方设置了也不应该影响我吧。再退一步来说,就算影响了,也不应该给我显示成这种左黑右白的鬼样子吧。不过产品说这个功能很高级,可以保留。玩笑归玩笑,问题还是得解决。

解决方案:

最先想到的肯定是给出问题的界面实现一下 preferredStatusBarStyle,效果确实不错,解决了,如图:



震惊:苹果手机电池栏“黑白无常”





先解决了问题上线再说,就像罗永浩说的:



震惊:苹果手机电池栏“黑白无常”





但是这该死的求知欲天天折磨着我,直到今天在搞包体积的时候,脚本检测到这个大的背景图,发现是从左往右渐变加深的,难道和图片有关系?本着试一试的原则,把图片删除的同时并且把preferredStatusBarStyle的代码注释掉,竟然好了,不可思议:



震惊:苹果手机电池栏“黑白无常”





找设计师要了不带渐变的图片,又尝试了一把



震惊:苹果手机电池栏“黑白无常”





对比俩种情况不难发现:

•无背景图,系统的导航栏显示的是黑色

•有背景图,系统的导航栏显示的是白色

💡💡 是不是UIKit对导航栏背景图做了监听?目的是为了让用户可以清晰的看到电池栏的信息?

带着这个猜测,去看了下去年的WWDC,果然找到了答案:

在iOS17中,default样式会根据内容的深浅调整status bar的颜色。

由于没有手动处理preferredStatusBarStyle,而背景图又是从左到右渐变加深,所以电池栏显示成了左黑右白。

后语:

由此可见:

1、遇到难以解决的问题,把锅甩给系统bug是多么的机智🐶;

2、建国后还真的是:



震惊:苹果手机电池栏“黑白无常”



参考链接:

https://developer.apple.com/videos/play/wwdc2023/10055/?time=1512

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
vue+elementui搭建后台管理界面(3侧边栏菜单)
上一节搭好了主框架,但是标签页和侧边栏只是分别展示了各自的菜单,如何将二者联动起来?定义路由规则:当有children属性时,从children里取出path填充到侧边栏,如:{path:'/',redirect:'/dashboard',name:'Container',
阮小五 阮小五
1年前
如何解决“pd虚拟机ID无效“的问题
苹果mac电脑上使用ParallelsDesktop18来安装虚拟机,但是却遇到了“虚拟机ID无效”的报错信息,这种情况要怎么办呢?小编为大家带来了详细的解决方法,一起来看看吧!出现这个问题时,我们先在上方的菜单栏点击图标,选择“控制中心”进入“控制中心”
Stella981 Stella981
3年前
Notification使用详解之一:基础应用
在消息通知时,我们经常用到两个组件Toast和Notification。特别是重要的和需要长时间显示的信息,用Notification就最合适不过了。当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一致好评,就连苹果也开始模仿了。今天我们就结合实例,探讨一下Notifica
Stella981 Stella981
3年前
Deepin标题栏太高的解决办法
Deepin标题栏太高的解决办法如果你是用的默认的白色主题mkdirp~/.local/share/deepin/themes/deepin/light如果你用的黑色主题mkdirp~/.local/share/deepin/themes/deepin/darkcd~/.loc
Stella981 Stella981
3年前
Android状态栏黑色字体
前言由于公司项目的欢迎页是白色的,,修改状态栏颜色后,导致状态栏的白色字体完全被覆盖了,联想到之前在QQ、UC等一些app上都见到过状态栏的字体是深色的,想着,,必定有解决的方案。于是,有了本篇blog。参考下面是我在网上找到的两篇文章1.白底黑字!Android浅色状态栏黑色字体模式(https://www.os
子桓 子桓
11个月前
mac电池最大充电限制 AlDente Pro for Mac最新
AlDentePro是一款适用于Mac操作系统的小工具,可以帮助用户限制电池充电量以延长电池寿命。具体来说,使用AlDentePro,用户可以:设置电池只充到特定的充电水平,例如80%或90%,从而减少对电池的压力,延长其使用寿命。在菜单栏中显示当前电池状
绣鸾 绣鸾
1年前
Bartender 4 for Mac菜单栏图标管理软件
Bartender4是一款用于管理macOS系统状态栏图标的软件。它允许你自定义状态栏图标的显示和排序,帮助你更好地组织和管理你在状态栏中使用的应用程序和工具。通过Bartender4,你可以隐藏或显示状态栏图标,以避免状态栏过多的图标拥挤在一起。你可以通
Python进阶者 Python进阶者
1年前
盘点一个列表相加的Python基础题目
大家好,我是皮皮。一、前言前几天在明佬的Python群【dq】问了一个Python列表基础处理的问题,一起来看看吧。下图是他的原始列表,想通过左边的列表,得到右边的合并列表。二、实现过程这里【流水线】和【hclw】大佬给了一个答案,如下图所示:如此顺利地解
流浪剑客 流浪剑客
1年前
Macos系统监控工具:iStat Menus for mac密钥激活 中文版 支持M1
是一款Mac上的硬件信息检测软件,能够实时监控计算机的CPU、GPU、内存、硬盘、网络、温度、电池以及系统时间等各个方面的信息。通过iStatMenus,用户可以在菜单栏实时查看Mac电脑的运行状态,包括CPU使用率、内存占用情况、硬盘读写速度、网络连接状
白云朵朵飘过 白云朵朵飘过
11个月前
Macos系统监控工具:iStat Menus for mac中文版 支持M1
iStatMenus是一款Mac上的硬件信息检测软件,能够实时监控计算机的CPU、GPU、内存、硬盘、网络、温度、电池以及系统时间等各个方面的信息。通过iStatMenus,用户可以在菜单栏实时查看Mac电脑的运行状态,包括CPU使用率、内存占用情况、硬盘