Swift 新的ViewController演示样式可能存在iOS13或Xcode错误
我的右Swift 新的ViewController演示样式可能存在iOS13或Xcode错误,swift,uinavigationbar,uibarbuttonitem,uinavigationitem,Swift,Uinavigationbar,Uibarbuttonitem,Uinavigationitem,我的右导航按钮的边距有问题 我已经在Xcode 11中将其提炼为一个新的单视图项目。我有一个启动屏幕故事板和一个主故事板 主情节提要有一个初始视图控制器,带有一个指向导航控制器的按钮和一个生成的视图控制器 工具栏上有两个按钮,如下所示: 如果我接着使用带有两个条形按钮的ViewController切换到另一个NavigationController,它看起来是这样的: 为什么在第二个ViewController中,右按钮紧靠边缘而不是边缘 更新:这似乎是iOS 13中新的演示样式的问题。如果
导航按钮的边距有问题
我已经在Xcode 11中将其提炼为一个新的单视图项目。我有一个启动屏幕故事板和一个主故事板
主情节提要有一个初始视图控制器
,带有一个指向导航控制器
的按钮和一个生成的视图控制器
工具栏上有两个按钮,如下所示:
如果我接着使用带有两个条形按钮的ViewController
切换到另一个NavigationController
,它看起来是这样的:
为什么在第二个ViewController
中,右按钮紧靠边缘而不是边缘
更新:这似乎是iOS 13中新的演示样式的问题。如果我将第一个导航控制器显示样式更改为全屏,则第二个控制器现在将正确显示(项目按钮与边距正确对齐)
这可能是iOS或Xcode中的错误吗?是的,这是iOS 13中的错误
解决方案是通过用户强制布局:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if #available(iOS 13.0, *) {
navigationController?.navigationBar.setNeedsLayout()
}
}
您的约束看起来像什么?你有任何相关的代码吗?我没有创建任何约束(我不认为你可以在按钮栏项目上这样做)。我也不需要写任何代码来演示这个问题。如果有人想尝试这个项目,你能帮我把它翻译成objective C吗?我不知道objective-C,除此之外,Swift已经存在了一段时间……我以不同的方式解决了这个问题,发现它不是一个bug,而是界面风格改变的结果,并设法从不同的Swift解决方案中破解了一些objC。无论如何,谢谢你。