2015-06-30 7 views
0

У меня есть таможня UIView с 2 многострочными ярлыками. Иногда мне нужно, чтобы скрыть эту точку зрения, так что я установить hidden = YES и ограничение высоты 0.AutoLayout изменить размер изображения

Я делаю это так, но я не совсем уверен, если я могу изменить свои ограничения, в моем обычае UIViews'layoutSubviews.

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    if (!self.hidden) { 
     self.heightConstraint.constant = 15 + self.titleLabel.frame.size.height + 4 + self.bodyLabel.frame.size.height + 15; 
    } else { 
     self.heightConstraint.constant = 0; 
    } 
} 

Я знаю, что макет не односторонний процесс улицы и layoutSubviews может вызвать updateConstraints и наоборот.

Безопасно ли изменять ограничения самого вида в layoutSubviews?

+0

Вы можете просто переопределить виды setHidden: method и сделать это там. layoutSubviews не является хорошим местом для вашего права. – DBoyer

ответ

-1

Вам нужен setNeedsLayout метод. Пример:

self.view.setNeedsLayout() 
1

layoutSubviews вызывается после того, как метод updateConstraints выполнил свою работу. Если после этого вы измените ограничения, вам придется снова позвонить [super layoutSubviews]. Правильное место для изменения ограничений находится в методе updateConstraints, но в вашем случае вы можете просто внести свои изменения за пределы метода layoutSubviews, а затем позвонить по телефону setNeedsLayout после того, как вы закончите.

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