2015-04-11 5 views
0

Я встречаюсь с странной проблемой, используя Auto Layout с UILabel, где он изменяет размер почти до размера своего содержимого за одну строку (меня заводит орехи) в iphone 4s/5/5s (он отлично работает на 6/6 +)UILabel не полностью изменяет размер с помощью автоматической компоновки

это мои настройки раскадровки, я поставил предпочтительную ширину с явным

enter image description here

и я пытаюсь добавить код в UITableViewCell классе

self.describe.preferredMaxLayoutWidth = self.describe.frame.size.width 

Но проблема все еще существует

это мой вопрос

enter image description here

EDIT

Это мой, чтобы получить высоту

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 

Этикетка называется "Адрес" в раскадровка (вы можете найти его на первом изображении в этом квесте п) отлично работает

+0

Опишите эти метки, количество строк: 0; –

+0

@JavierFloresFont конечно – jansma

+0

Какой код вы используете для установки высоты ячеек? – rdelmar

ответ

1

Попробуйте это может помочь вам

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; 
} 

EDIT:

Пожалуйста, перейдите по этой ссылке, может помочь вам

Dynamic Cells

Или попробуйте

yourCell.m в awakefromnib методом

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    [self setNeedsUpdateConstraints]; 
    [self updateConstraintsIfNeeded]; 
} 

Edit - 2

Что ваш режим разрыва строки, она должна быть

enter image description here

Edit: 3

Если вы используете ограничения по высоте для UILable, чтобы обеспечить отношение «Больше или равно» для высоты autoLayout, измените высоту для вас.

Relation Height

+0

вопрос все еще существует, спасибо за ваш ответ – jansma

+0

Попробуйте отредактированный ответ – Vishal16

+0

Я попробовал отредактировать, но он работает только в ios8 @Vishu – jansma

0

Если я правильно понял вашу проблему, то вы не имеете проблем с автоматической компоновкой. Вы можете сказать, что ваш ярлык потребляет желаемую ширину и высоту с автоматическим расположением. Однако вы можете проверить, сколько строк вы разрешаете на своем лейбле.

enter image description here

Если вы смотрите в инспекторе размер в раскадровку, вы можете задать столько строк, сколько вы хотите, чтобы показать, указав номер в поле Lines. Если это «0», это означает, что ваш ярлык может принимать все содержимое, но тогда у вас могут возникнуть проблемы, если вы установили размер для своей метки. Таким образом, некоторое содержимое будет усечено. Теперь вы можете либо установить поле «Линии» в инспекторе атрибутов равным нулю, либо установить ширину и высоту, либо указать количество строк, которые оно должно разрешить, и снова установить размер с автоматическим расположением.