如何对 UIView 上的自动布局约束引起的大小变化做出反应?
Posted
技术标签:
【中文标题】如何对 UIView 上的自动布局约束引起的大小变化做出反应?【英文标题】:How to react to size changes caused by autolayout constraint on a UIView? 【发布时间】:2016-01-28 20:27:49 【问题描述】:我有一个具有特定外观的自定义 UIView。我想要它,所以如果 UIView 的宽度由于代码设置其自动布局宽度约束而发生变化,我想通过相应地更改外观来对变化做出反应 - 一个例子是设置角半径。
我的自定义 UIView 如何对 UIView 上的自动布局约束引起的尺寸变化做出反应?
【问题讨论】:
你能在layoutSubviews更新它们吗? 【参考方案1】:覆盖layoutSubviews
:
- (void)layoutSubviews
[super layoutSubviews];
[self updateCornerRadius];
【讨论】:
这很容易。这是 UIView 中唯一在应用布局约束时触发的方法吗? 我相信自动布局将setCenter:
和setBounds:
发送到视图以设置其位置和大小,因此您可以覆盖它们,但我建议只覆盖layoutSubviews
。
嗯,还有drawRect:
可能会被发送。但我也建议坚持使用 layoutSubviews。以上是关于如何对 UIView 上的自动布局约束引起的大小变化做出反应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动布局在 Swift 中为可重用的 UIView 设置约束?