代码在下面!!!
首先先说一下要实现的效果是什么样子的。。。简单的来说就是一个scrollview里面有一个view,这个view里是有若干个高度不确定的label。在view下面还有其它view。
那么如果scrollview是要进行Masonry约束布局的话,它的contentsize就要通过更新最下面视图的bottom约束来控制。
那么对于scrollview上的视图来说,只有确定高度才能保证更新bottom会达到效果。
那么问题就来了。我要怎么确定这个子视图的高度呢?
刚开始想到的就是通过约束的相加,最后算出这个视图的高度。
好了,那么就要取到设置约束的值。
好!亮代码吧!(我也是在stackoverflow上找到的答案)
NSArray *commentLabelConstraintArray = [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.right.mas_equalTo(-10);
make.top.mas_equalTo(self.loveLabel.mas_bottom).mas_offset(4);
make.height.mas_equalTo(self.commentLabel.textLayout.textBoundingSize.height);
}];
首先用一个数组把你设置的约束接收起来。
MASConstraint *labelConstraint = commentLabelConstraintArray[2];
然后将其中的实例取出来。顺序就是设置约束的顺序。
NSLayoutConstraint *layout = [labelConstraint valueForKey:@"layoutConstraint"];
最后在利用KVO的方式取出其中的 NSLayoutConstraint
对象。
这样就可以利用NSLayoutConstraint
的constant
属性取出具体值了。
那么最后再整两句。。。其实如果开头读明白了的话,就知道我取出这些约束值一点毛用都木有。
不过效果也实现了出来。用到的是 RAC 信号的方式,在layoutSubviews
调用之后把label的frame传到了父视图上,再更新约束的。
哈哈哈!
网友评论