iOS UITableView设置tableHeaderView时发生约束错误 UIView-Encapsulated-Layout-Height UIView-Encapsulated-Layout

 

 

在将UITableViewtableHeaderView设置为我本身建立的View的时候,html

当我为这个自定义View添加约束以后启动调试,swift

而后符号断点UIViewAlertForUnsatisfiableConstraints命中了,spa

终端输出了以下的报错信息:.net

(
"<SnapKit.LayoutConstraint:0x1702a64e0@MAskDetailVC.swift#120 UIView:0x1017eb5e0.height == 211.666666666667>",
"<NSLayoutConstraint:0x170682760 'UIView-Encapsulated-Layout-Height' UIView:0x1017eb5e0.height == 212 (active)>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x170682760 'UIView-Encapsulated-Layout-Height' UIView:0x1017eb5e0.height == 212 (active)>

  

 

这实际上是CollectionView为你的自定义View自动添加了其余约束调试

然而它添加的约束你添加的约束优先级是相同的。
orm

 

因此解决问题的关键就是将你设置的约束的优先级下降htm

 

 

 

解决方案参考:blog

 

1、若是你使用了UIKit提供的API来设置约束,能够参考以下OC代码:get

NSArray * collectionConstraints_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_collectionview]-0-|" options:0 metrics:nil views:viewsDic];
[self addConstraints:collectionConstraints_V];

NSArray * collectionConstraints_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-103-[_collectionview]" options:0 metrics:nil views:viewsDic];
[self addConstraints:collectionConstraints_H];

NSLayoutConstraint * constraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[_collectionview]-0-|" options:0 metrics:nil views:viewsDic].firstObject;
constraint.priority = UILayoutPriorityDefaultLow;

[self addConstraint:constraint];

  

 

2、若是你使用了SnapKit来设置约束,能够参考以下Swift代码:it

askContainer.snp.makeConstraints { (m) in
    m.top.equalTo(detailTV.snp.top)
    m.leading.equalTo(detailTV.snp.leading)
    m.width.equalTo(SCREEN_WIDTH)
    let height = m.height.equalTo(height).constraint
    height.layoutConstraints.first?.priority = UILayoutPriorityDefaultLow
}

  

 

 

参考资料:http://blog.csdn.net/hello_hwc/article/details/47129711

 

 


转载请注明出处:http://www.cnblogs.com/ficow/p/7250330.html

相关文章
相关标签/搜索