可能带有新 ViewController 演示样式的 iOS13 或 Xcode 错误

Posted

技术标签:

【中文标题】可能带有新 ViewController 演示样式的 iOS13 或 Xcode 错误【英文标题】:Possible iOS13 or Xcode bug with new ViewController Presentation Style 【发布时间】:2020-03-15 06:42:58 【问题描述】:

我在NavigationBarButton 的右侧边距方面遇到问题。

我在 Xcode 11 中将其提炼成一个全新的单视图项目。我有一个启动屏幕故事板和一个主故事板。

主情节提要有一个Initial ViewController,带有一个指向NavigationController 的按钮和一个结果ViewController

工具栏有两个按钮,如下所示:

如果我随后使用带有两个条形按钮的ViewController 转到另一个NavigationController,它看起来像这样:

为什么,在第二个ViewController 中,右键是靠边而不是靠边?

更新:这似乎是 ios 13 中新的演示样式的问题。如果我将第一个导航控制器演示样式更改为全屏,第二个控制器现在可以正确显示(项目按钮正确对齐到边距)。

这可能是 iOS 或 Xcode 中的错误吗?

【问题讨论】:

你的约束是什么样的?有相关代码吗? 我没有创建任何约束(我不认为你可以在按钮栏项目上这样做)。我也不需要写任何代码来演示这个问题。 如果有人想尝试这个项目,它在1drv.ms/u/s!ArrsM4oXrGGbp6J0p4_-YFr6ogXYeA?e=KhkZPL 【参考方案1】:

是的,这是 iOS 13 中的一个错误

解决方案是强制布局,as explained on the Apple forums 用户 DaleOne:

override func viewWillAppear(_ animated: Bool) 
     super.viewWillAppear(animated)
     if #available(iOS 13.0, *) 
          navigationController?.navigationBar.setNeedsLayout()
     

【讨论】:

你能帮我把它翻译成目标 C 吗? 我不知道 Objective-C,除了 Swift 已经有一段时间了...... 我以不同的方式解决了这个问题,发现这不是一个错误,而是界面风格改变的结果,并设法从不同的快速解决方法中破解了一些 objC。无论如何,谢谢。

以上是关于可能带有新 ViewController 演示样式的 iOS13 或 Xcode 错误的主要内容,如果未能解决你的问题,请参考以下文章

单击tableview单元格行时如何推送新的viewcontroller?

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

带有后退按钮的 Tabbar Controller 到 ViewController

如何从 UIAlertcontroller 关闭模态 ViewController

在 ViewController 中使用带有外部 DataSource 和 UITableView 的自定义 UITableViewCell

iOS ViewController 的可访问性标签以表单形式呈现