在使用Masonry的情况下,如何取出设置约束的具体值

代码在下面!!!

首先先说一下要实现的效果是什么样子的。。。简单的来说就是一个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对象。

这样就可以利用NSLayoutConstraintconstant属性取出具体值了。

那么最后再整两句。。。其实如果开头读明白了的话,就知道我取出这些约束值一点毛用都木有。
不过效果也实现了出来。用到的是 RAC 信号的方式,在layoutSubviews调用之后把label的frame传到了父视图上,再更新约束的。

哈哈哈!

你可能感兴趣的:(在使用Masonry的情况下,如何取出设置约束的具体值)