iOS计算通过约束布局的view高度

在一些场景我们需要自行计算高度的场景, 比如tableheaderview, 如果用约束布局, 那么用以下方法计算即可, view的细节跟动态布局的cell和scrollview一样, 约束必须明确每个view的高度并且距离边界不能模糊

代码

- (CGFloat)contentViewFittingSize:(UIView *)contentView {
    // 获得父容器的宽度,我这里是获取控制器View的宽度
    CGFloat contentViewWidth = CGRectGetWidth(self.view.frame);
    // 新建一个宽度约束
    NSLayoutConstraint *widthFenceConstraint = [NSLayoutConstraint constraintWithItem:contentView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:contentViewWidth];
    // 添加宽度约束
    [contentView addConstraint:widthFenceConstraint];
    // 获取约束后的size
    CGSize fittingSize = [contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    // 记得移除
    [contentView removeConstraint:widthFenceConstraint];
    return fittingSize.height;
}

你可能感兴趣的:(iOS计算通过约束布局的view高度)