Autolayout для iOS: проблема с UILabels в родительском представлении с изменением размера
у нас есть представление, которое содержит только UILabel. Этот ярлык содержит многострочный текст. Родитель имеет переменную ширину, размер которой можно изменить жестом панорамирования. Моя проблема в том, что, когда я делаю это, изменение размера UILabel не пересчитывает его высоту, так что весь контент все еще виден, он просто обрезает его.
нам удалось исправить это с помощью небольшого взлома, но запустить его ужасно медленно:
- (void)layoutSubviews {
CGSize labelSize = [self.labelDescription sizeThatFits:CGSizeMake(self.frame.size.width, FLT_MAX)];
if (self.constraintHeight) {
[self removeConstraint:self.constraintHeight];
}
self.constraintHeight = [NSLayoutConstraint constraintWithItem:self.labelDescription attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:labelSize.height];
[self addConstraint:self.constraintHeight];
[super layoutSubviews];
}
не должен»это происходит автоматически с autolayout?
РЕДАКТИРОВАТЬ
Структура моего взгляда такова:
UIScrollView
---> UIView
---> UILabel
Вот ограничения на UIScrollView:
=32)-[DescriptionView:0x85c81c0] (Names: '|':UIScrollView:0x85db650 )>,
,
,
,
,
Вот ограничения на UIView:
,
,
,
Сама UILabel не имеет никаких ограничений, кроме того, чтобы прикрепить его к краям своего родителя