iOS Масонство, ограничение размера вида не работает, если от него зависит centerX другого вида - PullRequest
0 голосов
/ 08 мая 2020

Я использую в своем проекте масонство. Сначала я налагаю некоторые ограничения на rightToolBar:

CGSize rightToolBarSize = CGSizeMake(54, 210);
[self.rightToolBar mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.right.equalTo(self).offset(-10);
    make.bottom.equalTo(self.mas_bottom).mas_offset(-20);
    make.size.mas_equalTo(rightToolBarSize);
}];

Затем другое представление, avatar:

[self.avatar mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.size.mas_equalTo(CGSizeMake(50, 50));
    make.bottom.equalTo(self.rightToolBar.mas_top).with.offset(-10);
    make.centerX.equalTo(self.rightToolBar.mas_centerX);
}];

Это делает self.rightToolBar шириной 74 , 20 больше, чем я ожидал. Если я изменю ограничения аватара на:

[self.avatar mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.size.mas_equalTo(CGSizeMake(50, 50));
    make.bottom.equalTo(self.rightToolBar.mas_top).with.offset(-10);
    make.right.equalTo(self).with.offset(-17); // centerX -> right
}];

Теперь self.rightToolBar ширина будет 54 . Но в этом нет смысла, почему установка centerX аватара меняет ширину rightToolBar?

1 Ответ

0 голосов
/ 09 мая 2020

Возможно, вам стоит удалить ограничения rightToolBar и снова переделать

[self.rightToolBar removeConstraints:self.constraints.constraints];
[self.rightToolBar mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.right.equalTo(self).offset(-10);
    make.bottom.equalTo(self.mas_bottom).mas_offset(-20);
    make.size.mas_equalTo(rightToolBarSize);
}];
...