2015-09-03 2 views
5

Я пытаюсь использовать 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); 
}]; 

Как центрировать взгляд внутри «супервизора» правильно с масонством?

+0

Вашего код работает для меня, можете ли вы объяснить, что не работает на вашей стороне? Если представление должно находиться внутри своего супервизора, вызова 'make.centerX' будет недостаточно, чтобы также позиционировать его по вертикали внутри вызова вида' make.center.equalTo (b) '. – Daehn

+0

А, простите, я хочу только по центру горизонтально. Для меня, когда я использую это ограничение (в моем примере), subview не отображается. –

ответ

6

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

[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) 
}]; 
+0

Это хорошая идея. благодаря –

Смежные вопросы