Как сложить + центрировать два текстовых представления, используя программные ограничения?

Я пытаюсь получить жестко закодированный макет, где два текстовых представления должны быть сложены друг на друга и центрированы в родительском UICollectionViewCell:

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

Из-за различных унаследованных / бизнес-причин я должен делать это, используя ограничения, жестко запрограммированные в подклассе UICollectionViewCell. Два текстовых представления могут различаться по длине, но должны быть центрированы вертикально в родительском представлении, находясь друг над другом.

Есть ли простой способ выразить это в ограничениях? Я немного новичок в этом типе системы разметки, поэтому любая помощь приветствуется!

Приложение, с которым я работаю, также использует библиотеку Masonry ( https://github.com/SnapKit/Masonry), если это облегчает задачу.

1 ответ

Давайте предположим, что ярлыки названы textView1 а также textView2,

Что вам нужно, это установить ограничение для центрирования по горизонтали textView1 к этому superview(UICollectionViewCell), затем центр textView2 с textView1 (вы можете сосредоточиться на это superview тоже) и у вас оба будут по центру.

Чтобы получить его друг над другом, вы должны установить ограничение для настройки textView2 верх как textView1 низ.

Никогда не использовал масонство, но похоже, что вам нужно иметь следующие ограничения:

[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);
}];
Другие вопросы по тегам