开发中遇到的Masonry技术点

两个内容可变的Label1和Label2,Label1居左,Label2居右,设置固定间隔,内容过长的时候,如何确定优先显示那个Lable的内容呢?即:哪个label应该显示全?哪个Label显示省略号;

加入,优先显示全Label2的内容,则

1
2
3
[Label1 setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];//宽度不够时,可以被压缩
[Label1 setContentHuggingPriority:UILayoutPriorityRequired/*抱紧*/
forAxis:UILayoutConstraintAxisHorizontal];

UITableView autolayout的tableHeaderView设置

使用masonry给tableHeadView 添加各种子View,并做好布局
对子View中多行的UILabel,设置preferredMaxLayoutWidth属性,否则UILabel只能计算出单行的高度,如下

1
self.hitLab.preferredMaxLayoutWidth = SCREEN_WIDTH - 20;

动态计算tableHeadView的高度,并设置tableHeadView的frame,如下

1
2
3
4
5
CGFloat height = [self.tableHeadView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect frame = self.tableHeadView.frame;
frame.size.height = height;
self.tableHeadView.frame = frame;
self.tableview.tableHeaderView = self.tableHeadView;