iOS 9 自动布局对齐矩形问题

Posted

技术标签:

【中文标题】iOS 9 自动布局对齐矩形问题【英文标题】:iOS 9 Auto Layout Alignment Rect Issues 【发布时间】:2015-10-23 12:30:01 【问题描述】:

所以我对 UIView 上的 frame 和 alignment rect 之间的区别有一个深刻的理解。然而,在实践中,这个概念似乎并不奏效。

我重写了alignmentRectInsets,它将根据我希望约束也应用的内容来插入框架。我看到框架进行了相应的调整;但是,约束会忽略对齐矩形并仍使用原始帧值。我错过了什么?我认为对齐矩形的重点是能够调整约束如何与特定内容对齐。在这种情况下,我希望它忽略右上角的“徽章”。调整插图并不能像我解释的那样工作......似乎alignmentRectInsets 属性只会改变框架,但不会影响约束。

此外,我尝试覆盖方法“alignmentRectForFrame”和“frameForAlignmentRect”。不幸的是,设置视图时不会调用这些方法,因此我无法以这种方式调整对齐矩形。

我确实将“translatesAutoResizingMask”设置为 false。视图和约束在 Interface Builder 中设置。我正在使用 Xcode 7.1 并运行 ios 9.1。但是,在昨天升级之前,我在 Xcode 7 和 iOS 9 上看到了同样的问题。

任何关于对齐矩形的帮助或说明都会很棒。谢谢!

【问题讨论】:

【参考方案1】:

让我感到困惑的一件事是,在向子视图添加约束时,“超级视图”实际上代表对齐矩形,而不是视图的框架。因此,当您限制您的徽章时,您希望它在您的超级视图中向右,而不是被限制在其右上角。如果不清楚,您可能需要查看this blog post。

【讨论】:

以上是关于iOS 9 自动布局对齐矩形问题的主要内容,如果未能解决你的问题,请参考以下文章

ios自动布局视觉格式-对齐

iOS自动布局,列对齐

自动布局动画保持 UILabel 居中

在 iOS 上,边距、边缘插入、内容插入、对齐矩形、布局边距、锚点......有啥区别?

iOS自动布局:将UILabel的左边缘与容器中的水平中心对齐?

使用自动布局创建对齐的表单