UIBarButtons 带有系统项的样式,旋转后消失

Posted

技术标签:

【中文标题】UIBarButtons 带有系统项的样式,旋转后消失【英文标题】:UIBarButtons styled with System Items, disappear after rotation 【发布时间】:2016-01-24 11:17:20 【问题描述】:

在我们的应用程序中,初始 ViewController 嵌入在常规导航控制器中。我们有两个 UIBarButtons,位于导航栏的右上角。其中一个按钮带有自定义图像,另一个按钮带有来自提供的系统项目的相机图标。

问题来了: 当应用程序以纵向启动时,两个条形按钮都是可见的。将设备旋转为横向后,带有相机符号的 UIBarButton 消失,再次旋转回纵向时不再显示。

导航栏和 UIBarButtons 都没有出路,也没有对代码进行任何调整。

旋转后消失的按钮仍然存在于导航栏中,如果您点击它应该显示的位置,则会触发该操作。它似乎只是由于某种原因被删除的图像。并且仅当按钮使用任何系统项进行样式设置时。

谁能想到这个问题出现的原因?

【问题讨论】:

你能提供一些在导航栏上添加两个栏按钮的代码吗? 按钮不是在代码中添加的,而是在界面生成器中添加的。按钮没有插座,唯一的区别是带有系统项的按钮在旋转后变得不可见。 【参考方案1】:

好的,这个问题与我在 appDelegate 中的外观代理代码有关:

[[UITextField appearance] setTintColor:[UIColor darkGrayColor]];
[[UITextView appearance] setTintColor:[UIColor darkGrayColor]];

显然这两个语句会影响 barbutton 外观的行为。我不明白为什么,但我确信这是有充分理由的。

去掉appDelegate中的这两条语句解决了问题。

【讨论】:

以上是关于UIBarButtons 带有系统项的样式,旋转后消失的主要内容,如果未能解决你的问题,请参考以下文章

添加/删除其他 UIBarbuttons 时如何保持 UIBarButtonItem 居中?

当用户旋转手机并将所有数据保留在 ArrayAdapter 中时,保留列表视图项的良好解决方案

如何将对话框项的样式更改为测试模式下出现的样式?

如何创建带有菜单项的滑动抽屉?

带有 SwiftUI 的 Apple Watch 上列表项的背景 [重复]

如何使用样式组件在伪元素后旋转图像