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", это означает, что ваша метка может взять все содержимое, но тогда у вас могут возникнуть проблемы, если вы установили размер для своей метки. Таким образом, некоторое содержимое будет усечено. Теперь вы можете либо установить поле "Линии" в инспекторе атрибутов на ноль и установить ширину и высоту, либо указать количество линий, которое должно быть разрешено, и снова установить размер с помощью автоматического макета.

Другие вопросы по тегам