Сосредоточение взгляда в его суперпредставлении с масонством

Я пытаюсь использовать Masonry для iOS. У меня есть ярлык и вид.

Я хочу добавить метку к виду и расположить ее горизонтально по центру.

Однако ограничение, которое я создаю с кладкой, не работает правильно.

UILabel *a = [UILabel new];
a.text = @"Hi";
a.textColor = [UIColor blackColor];
[a sizeToFit];

UIView *b = [UIView new];
b.frame = CGRectMake(0, 0, CGRectGetWidth(a.frame) + 18.0f, 19.0f);
[b addSubview:a];

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerX.equalTo(b.mas_centerX);
}];

Как правильно центрировать вид в пределах его "суперпредставления" с помощью масонства?

1 ответ

Решение

Это работает, если вы добавляете верхнее ограничение:

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@0)
    make.centerX.equalTo(b);
}];

Тем не менее, вы можете полностью разложить макет и избавиться от настройки frame а также sizeToFit материал:

UILabel *a = [UILabel new];
a.text = @"Hi";
a.textColor = [UIColor blackColor];

UIView *b = [UIView new];
[b addSubview:a];

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@0);
    make.centerX.equalTo(b);
}];

[b mas_makeConstraints:^(MASConstraintMaker *make) {
    make.width.equalTo(a).with.offset(18)
    make.height.equalTo(a)
}];
Другие вопросы по тегам