【发布时间】:2017-11-06 20:09:22
【问题描述】:
我有一个带有 UITableView 的视图控制器,它占据了大部分屏幕。在视图控制器的底部,我有一个名为 controlView 的 UIView 和一些按钮。当 viewcontroller 首次加载时,我将管理 controlView 高度的NSLayoutConstraint 设置为 1,以便 controlView 不可见。
@IBOutlet weak var controlViewHeightConstraint: NSLayoutConstraint!
controlViewHeightConstraint.constant = 1.0
当用户点击表格视图单元格时,我调整controlViewHeightConstraint.constant 使其可见
controlViewHeightConstraint.constant = heightConstant //heightConstant = 65
self.view.layoutIfNeeded()
这在 iphone 5、6、7、8 和 8+ 上运行良好。但是,对于 X,当我在 viewDidLoad 中调用 controlViewHeightConstraint=1 时,controlView 仍然可见。知道为什么它在不可见时出现。
故事板设置
点击单元格前的 iPhone 8+
点击单元格后的 iPhone 8+
点击单元格前的 iPhone X
点击单元格后的 iPhone X
【问题讨论】:
-
天啊,这么多的大图真的很难看出有什么不同。请把它们变小。
-
抱歉我一分钟就更新了
-
你在不同的设备模拟器上使用相同的iOS版本吗?其次:您如何定位该 controlView?您是否切换到新的 safeArea 布局约束?
-
@JanBrinker 是的,使用相同版本的 iOS。我在情节提要中设置了位置和所有约束。不确定我是否理解您的最后一个问题
-
@Brosef:从 iOS 11 开始,有一个名为
safeAreaLayoutGuide的新布局指南。请参阅此处的文档:developer.apple.com/documentation/uikit/uiview/… 此 layoutGuide 的主要目的是说明 iPhone X 的差异(圆角、凹口、底栏)。所以你似乎只对 iPhone X 有问题,这可能就是原因。检查情节提要中的约束,也许您可以将定位更改为safeAreaLayoutGuide。无论如何你都应该用 iPhone X 这样做,但它也可以解决你的问题。
标签: ios iphone swift nslayoutconstraint