【发布时间】:2020-10-13 08:53:54
【问题描述】:
将我们的应用程序从 Xcode10 迁移到 Xcode12 后,我们的 UIBarButtonItems 出现了问题。其中一些不可见,但仍在工作。
我们能够更具体地定位以下目标:
- iOS12 上的 Xcode10.3:没问题
- Xcode10.3 在 iOS13 上通过发布:没有问题
- Xcode10.3 在 iOS14 上通过发布:没有问题
- iOS12 上的 Xcode11.7:没问题
- iOS13 上的 Xcode11.7:存在问题
- iOS12 上的 Xcode12.0.1:没问题
- iOS13 上的 Xcode12.0.1:存在问题
- iOS14 上的 Xcode12.0.1:存在问题
- 问题出现在 Debug 和 Release 中
- 当我们从 Xcode 运行应用程序时没有出现问题
- 仅当我们退出应用并直接从设备再次启动时才会出现问题
- 仅当 UIBarButtonItem 为带有图标的系统项时才会出现问题,例如:刷新、添加、...
- UIBarButtonItem 是带有文本的系统项时不会出现问题,例如:编辑、关闭、...
- 当 UIBarButtonItem 使用来自资产的图像进行自定义时,问题不会出现
- 如果我以编程方式执行 UIBarButtonItem 系统,也会出现问题
查看“层次结构视图”时,项目及其图标在那里,但未显示在设备上。 我们看不出显示或不显示项目的任何差异,这有助于理解问题。
截图如下:
- 故事板
- 从图标启动后在 iPad 上出现问题
- 查看问题的层次结构
更多截图(比较)可在此处获得:https://imgur.com/a/7Dcyvir
是否有人在 Xcode11 或 Xcode12 上看到过类似的行为? 知道我们可以尝试什么,或者它是否是需要报告修复的 Xcode 问题?
提前感谢您的帮助!
【问题讨论】:
-
您可以检查在所有部署目标版本中的普通 UIView 中作为普通 UIImage 实现时系统符号图像“arrow.clock”是否可用。当直接在设备上启动时图标未出现时,您还可以检查您的 initWithCoder 函数是否正确启动。一些符号已被弃用并且根本不会出现,因为它们不存在,所以像服装图像资产这样的后备机制可以解决它。
-
您好@OlSen,我已经尝试使用带有系统映像
arrow.clockwise和此映像works fine 的UIImageView,即使我重新启动应用程序也是如此。UIViewController这里不是自定义的,但我尝试了一个简单的,只是为了用日志验证流程。无论我使用 Xcode 还是图标启动都是正确的:initWithCoder > viewDidLoad > viewWillAppear > viewWillLayoutSubviews > viewDidLayoutSubviews > viewDidAppear. -
然后我会尝试交换图标排序并观察最右边的图标是否消失。这样你就知道这显然是一个布局问题。然后可能是因为在加载 ViewController 的 View 时帧宽度是未知的。您可以在所有布局方法中通过多个
NSLog(@"width = %f", frame.width)观看此内容.. 您会发现一些方法在调用时没有宽度.. -
已经试过了,不管在什么位置,带系统图标的项目都不出现... :(
标签: ios objective-c xcode uikit uibarbuttonitem