使用场景
有时候我们给一个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;
}








网友评论