自動佈局與非自動佈局的混合使用

有時你可能希望對 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;
}