如何对 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 上的自动布局约束引起的大小变化做出反应?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nib 中为 UIView 应用自动布局?

如何使用自动布局在 Swift 中为可重用的 UIView 设置约束?

UIView 使用约束自动布局居中和调整大小

空 UIView 上的自动布局约束无法按预期工作

Interface Builder 运行时自动布局约束阻止视图占用固有大小,我该如何解决这个问题?

自动布局和 AVPlayerViewController