自动布局与非自动布局的混合使用

有时你可能希望对 UIKit 本身执行的自动布局计算执行一些其他操作。

示例: 当你的 UIView 有一个 maskLayer 时,你可能需要在自动布局改变时更新 maskLayer UIViewframe

// CustomView.m
- (void)layoutSubviews {
    [super layoutSubviews];
    // now you can assume Auto Layout did its job
    // you can use view's frame in your calculations
    CALayer maskLayer = self.maskLayer;
    maskLayer.bounds = self.bounds;
    ...
}

或者如果你想对 ViewController 中的自动布局采取一些额外的动作

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    // now you can assume all your subviews are positioned/resized correctly
    self.customView.frame = self.containerView.frame;
}