框架改变时执行代码

Perform code when frame is changed

我有一个自定义 class,它是 UIView 的子class。在 storyboard 中,我将 UIView's class 设置为自定义 class。 storyboard 中的 view 的高度为 constraint,因此我可以通过编程方式更改高度。 (我知道这不是唯一的方法,但我认为这是最简单的方法。)

我想在每次 view's 高度变化时在自定义 class 中执行一些代码。

我尝试了以下方法:

- (void)setFrame:(CGRect)frame  {
    [super setFrame:frame};
    NSLog(@"Frame did change");
}

但此方法仅在启动时运行,而不是在 (self) 高度更改时运行。我如何在框架更改时执行代码?

只需覆盖自定义视图中的 layoutSubviews 方法 class

- (void)layoutSubviews
{
   [super layoutSubviews];
   NSLog(@"Frame did change");
}