UILabel не полностью меняет размер с помощью Auto Layout
Я сталкиваюсь со странной проблемой, связанной с использованием Auto Layout с UILabel, когда он изменяет размер почти до размера своего контента за вычетом одной строки (сводит меня с ума) в iphone 4s/5/5s (он отлично работает на 6/6+)
это моя настройка раскадровки, я установил предпочтительную ширину с явным
и я пытаюсь добавить код в UITableViewCell
учебный класс
self.describe.preferredMaxLayoutWidth = self.describe.frame.size.width
Но проблема все еще существует
это моя проблема
РЕДАКТИРОВАТЬ
Это мой рост
self.address.preferredMaxLayoutWidth = CGRectGetWidth(self.address.bounds)
self.describe.preferredMaxLayoutWidth = CGRectGetWidth(self.describe.bounds)
self.address.text = data.address == nil ? "no data" : data.address
self.describe.text = data.describe == nil ? "no data" : data.describe
self.layoutIfNeeded()
self.updateConstraintsIfNeeded()
return self.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
Ярлык "Адрес" в раскадровке (вы можете найти его на первом изображении в этом вопросе) работает нормально
2 ответа
Попробуйте это может помочь вам
YourCell.m
- (void)layoutSubviews
{
[self.contentView updateConstraintsIfNeeded];
[super layoutSubviews];
[self.contentView layoutIfNeeded];
CGFloat width = [UIScreen mainScreen].bounds.size.width - 60;//your desire width
self.yourLAbel.preferredMaxLayoutWidth = width;
}
РЕДАКТИРОВАТЬ:
Пожалуйста, перейдите по этой ссылке, это может помочь вам
Или попробуй
yourCell.m в методе awakefromnib
- (void)awakeFromNib
{
[super awakeFromNib];
[self setNeedsUpdateConstraints];
[self updateConstraintsIfNeeded];
}
Редактировать - 2
Какой у вас режим перевода строки, он должен быть
Изменить:3
Если вы используете ограничения высоты для UILable, так что вы должны предоставить отношение "Больше или равно" для высоты, autoLayout изменит высоту для вас.
Если я правильно понял вашу проблему, то у вас нет проблем с автоматическим макетом. Вы можете указать метке, чтобы она использовала желаемую ширину и высоту с помощью автоматического макета. Однако вы можете проверить, сколько строк вы разрешаете использовать на своем ярлыке.
Если вы заглянете в инспектор размеров на вашей раскадровке, вы можете указать столько строк, сколько хотите показать, указав число в поле "Линии". Если это "0", это означает, что ваша метка может взять все содержимое, но тогда у вас могут возникнуть проблемы, если вы установили размер для своей метки. Таким образом, некоторое содержимое будет усечено. Теперь вы можете либо установить поле "Линии" в инспекторе атрибутов на ноль и установить ширину и высоту, либо указать количество линий, которое должно быть разрешено, и снова установить размер с помощью автоматического макета.