所以我对UIView上的frame和alignment rect之间的差异有了深刻的理解。但是,在实践中,这个概念似乎不起作用。
我覆盖alignmentRectInsets,它将根据我想要约束应用的内容来插入帧。我看到框架相应调整;但是,约束忽略对齐rect并仍然使用原始帧值。我错过了什么?我认为对齐rect的要点是能够调整约束如何与特定内容对齐。在这种情况下,我希望它忽略我在右上角的“徽章”。调整insets不会像我解释它一样工作......似乎alignmentRectInsets属性只会改变框架,但不会影响约束。
另外,我试图覆盖方法“alignmentRectForFrame”和“frameForAlignmentRect”。不幸的是,在设置视图时不会调用这些方法,因此我无法以这种方式调整对齐方式。
我确实将“translatesAutoResizingMask”设置为false。视图和约束在Interface Builder中设置。我正在使用Xcode 7.1并运行iOS 9.1。但是,在昨天升级之前,我看到了与Xcode 7和iOS 9相同的问题。
对齐矩阵的任何帮助或澄清都会很棒。谢谢!
答案 0 :(得分:0)
令我困惑的一件事是,当向子视图添加约束时,“超级视图”实际上表示对齐矩形而不是视图的框架。因此,当您约束徽章时,您希望徽章位于您的超级视图中,并且位于右侧,而不是限制在其右上角。如果不清楚,您可能要签出this blog post。