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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容