2015-11-01 2 views
0

код макета:кладка autolayout не работает

[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 0, 0)); 
}]; 

[leftLabel mas_updateConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 20, 100, 20)); 
    make.width.equalTo(@(200)); 
}]; 

Я хочу, чтобы установить ширину leftLabel с 200, но результат не является правильным, можете ли вы сказать мне причину, спасибо очень много,

У меня есть Другой вопрос, могу ли я использовать mas_updateConstraints вместо mas_makeConstraints в любое время?

ответ

1

Когда вы устанавливаете края своей метки, вы косвенно определяете ее ширину. Поэтому вы должны либо установить ребра ИЛИ ширину. Не оба. В вашем случае, если вы хотите установить ширину лейла 200 и сохранить оставшиеся три константы из ваших краев вставок вы должны сделать это следующим образом:

[leftLabel mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.top.equalTo(@10); 
    make.left.and.bottom.equalTo(@0); 
    make.width.equalTo(@200); 
}]; 

Согласно документации MASONRY Вам необходимо использовать mas_updateConstraints обновить константы существующих ограничений. Поэтому вы, вероятно, должны использовать его только в том случае, если хотите изменить некоторые значения по ограничениям, которые вы указали ранее с mas_makeConstraints

+0

все в порядке, большое спасибо –