ios根据约束计算行高

使用场景

有时候我们给一个View设置好底部自适应的约束后,并且在cell的header中,headerView的高度是由数据源方法决定的。所以我们必须在返回高度的这个方法里面,得到headerView的高度

代码如下

/// 传入你要计算的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;
}

步骤

一、View的约束高度要自适应

二、添加一个宽度约束

三、调用systemLayoutSizeFittingSize

你可能感兴趣的:(iOS,ios,uiview)