iOS 自动布局错位视图的错误
Posted
技术标签:
【中文标题】iOS 自动布局错位视图的错误【英文标题】:iOS auto-layout misplaced views off-by-one bug 【发布时间】:2014-07-15 22:13:12 【问题描述】:我有两个按钮,每个按钮应该占据视图宽度的一半。
我有:
左侧按钮到超级视图的前导空间约束 从左侧按钮到右侧按钮的尾随空间限制 超级视图右侧按钮的尾随空间约束 按钮的等宽限制我得到错位的视图:
Button 1
Expected: width=161
Actual: width=160
Button 2
Expected: width=161
Actual: width=160
我对垂直也是如此。
当然,320 / 2 = 160,对吧?谁能指出我做错了什么?还是我应该忽略这些警告?
【问题讨论】:
【参考方案1】:错位的观点似乎确实比要求更多的建议。除非限制被打破,否则您可能没有什么可担心的。
如果您希望警告消失,请尝试选择“更新约束”,因为它们可能缺少一个额外的像素来填充屏幕。
【讨论】:
“更新约束”不会改变任何东西。我同意它没有破裂。我很好奇为什么具有精确像素(点)值的简单布局会导致问题。例如,将 Retina 3.5 英寸外形尺寸分成 4 个相等的空间,顶部的状态栏应为 (480 - 20) / 4 = 115。自动布局似乎计算为 116。【参考方案2】:您是在 xib/storyboard 中执行此操作吗?如果您通过在两个视图之间进行控制拖动来创建约束,则它们可能是通过将其constant
属性设置为当时视图的偏移量来创建的。选择每个约束并将其 constant
设置为 0
或任何您想要的。
【讨论】:
是的,它们是在故事板中创建的。在按钮宽度设置为总宽度的一半并与两侧的超级视图对齐后,我控制拖动它们。因此,约束确实具有零常数值。我也许能够弄清楚如何使用合适的常量值让警告消失,但恕我直言,它们应该为零。 实际上,宽度警告已经消失了。不知道发生了什么变化......我仍然对高度警告有疑问。 (480 - 20) / 4 = 115 ...错位的观看次数预计为 116。以上是关于iOS 自动布局错位视图的错误的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局的 IB_DESIGNABLE 自定义视图的错位视图警告和奇怪行为
UICollectionViewCell 子视图的位置错误(自动布局)
当项目使用自动布局时,导航控制器无法在 iOS 7 中推送视图控制器