如何使用程序约束堆叠+居中两个文本视图?

时间:2016-10-08 05:29:33

标签: ios constraints masonry-ios-osx

我正在尝试实现一种硬编码布局,其中两个文本视图应该相互堆叠并以父UICollectionViewCell为中心:

----------------------
|                    |
|    This is text    |
|      Also text     |
|                    |
----------------------

由于各种遗留/业务原因,我应该使用UICollectionViewCell的子类中的硬编码约束来完成此操作。两个文本视图的长度可能不同,但应在父视图中垂直居中,同时彼此重叠。

是否有一种简单的方法可以在约束中表达这一点?我对这种类型的布局系统有点新意,所以对任何帮助都表示赞赏!

我正在使用的应用程序也使用了Masonry(https://github.com/SnapKit/Masonry)库,如果这样可以让事情变得更容易。

1 个答案:

答案 0 :(得分:0)

让我们假设标签名为textView1textView2

您需要设置一个约束,使其textView1水平居中superviewUICollectionViewCell),然后textView2居中textView1 (你也可以集中在它上面superview)你将两者都集中在一起。

要将其置于彼此之上,您必须设置一个约束,将textView2顶部设为textView1底部。

从未使用过Masonry,但看起来你需要有这些限制:

[textView1 mas_makeConstraints:^(MASConstraintMaker *make) {
    //Center first textView in the superview
    make.centerX.equalTo(superview); 
}];
[textView2 mas_makeConstraints:^(MASConstraintMaker *make) {
    //Center second textView with the first one 
    make.centerX.equalTo(textView1);
    //Set second textView to be below the first one
    make.top.equalTo(textView1.mas_bottom);
}];