uiView 在 iOS10 的 ViewController 中未对齐,但不是 iOS11
Posted
技术标签:
【中文标题】uiView 在 iOS10 的 ViewController 中未对齐,但不是 iOS11【英文标题】:uiView misaligning inside ViewController for iOS10, but not iOS11 【发布时间】:2018-05-02 09:34:37 【问题描述】:我最近开始使用 Swift 和 Xcode,我不确定为什么我的 viewcontroller
中主视图的底部约束在 ios 10 设备上向上移动,而它在 iOS11 上正常工作。
我有一个类似于另一个应用程序的东西,其中顶视图约束在 iOS10 中向下移动,但我设法通过覆盖 viewDidLayoutSubviews()
并重置低于 11 的设备的约束来修复它。
不幸的是,这个技巧这次似乎不起作用。如果我覆盖了底部约束,底部锚点会得到纠正,但顶部的锚点会被拉起,并且部分视图会被导航栏隐藏。 我一直在尝试通过以前的问题(其中大多数是针对顶部差距,我没有设法修改它们以解决我得到的底部差距)和谷歌找到解决方案,但没有运气。
为了清楚起见,我附上了问题的屏幕截图。左边是iOS11,右边是iOS10。
我尝试过的覆盖:
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
graphView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
graphView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
if #available(iOS 11, *)
// safe area constraints already set
else
let standardSpacing: CGFloat = 0.0
NSLayoutConstraint.activate([
contentView.bottomAnchor.constraint(equalTo: bottomLayoutGuide.bottomAnchor, constant: standardSpacing)])
结果:
【问题讨论】:
【参考方案1】:您需要在主视图中设置这 4 个约束
【讨论】:
我已将它们全部设置到安全区域。将顶部空间绑定到超级视图没有帮助以上是关于uiView 在 iOS10 的 ViewController 中未对齐,但不是 iOS11的主要内容,如果未能解决你的问题,请参考以下文章
如何在真实设备上的 iOS 10 中将渐变应用到 UIView
添加 UIView 以覆盖整个 UITableViewCell 以及 iOS 10 中的附件视图
iOS 10 UILabels -> 1 UIView -> 循环动画