UIlabel Sizetofit неожиданное поведение

Я столкнулся с неожиданным поведением моего метода UIlabel sizeToFit(). Теперь я попытался создать событие numberOfLines = 0, которое я назвал LayoutIfNeed(). Но ни один из них не работает.

Я даже пробовал методы, указанные в этом вопросе: наверх в UILabel

Но снова никто не помог. У меня не так много ограничений, я просто использую автоматическое изменение размера булавок. Я даже пробовал это без ограничений или без автоматического изменения размера.

У меня есть эта метка в TableViewCell и CollectionReusableView. Вызов его в awakeFromNib() просто не влияет.

Код UIcollectionReusableView:

override func awakeFromNib() {
    super.awakeFromNib()


    label.sizeToFit()

    label.numberOfLines = 0
    label.layer.shadowOffset = CGSize(width: 0, height: 0)
    label.layer.shadowOpacity = 3
    label.layer.shadowRadius = 8

}

ограничивает:

введите здесь описание изображения

Код TableViewCell:

override func layoutSubviews() {
    super.layoutSubviews()

// this is the UIview on which the label is put on.
    contentView.layoutIfNeeded()

}


override func awakeFromNib() {
    super.awakeFromNib()
    // This is the label has the issue
    caption.sizeToFit()

}

Ограничения:

введите здесь описание изображения

Кроме того, метка в текстовом представлении складывается с другой меткой, а ограничения стека:

введите здесь описание изображения

вот пример:

введите здесь описание изображения

Это просто не работает. Я совсем не в теме.

Любая помощь приветствуется.


person Aakash Dave    schedule 09.11.2017    source источник
comment
Опубликуйте фактический код, который вы используете, чтобы кто-то мог попытаться вам помочь. Здесь недостаточно информации, чтобы дать какой-либо дельный совет.   -  person Dima    schedule 10.11.2017
comment
обновляет вопрос. Требуется дополнительная информация?   -  person Aakash Dave    schedule 10.11.2017
comment
Вы также можете опубликовать, как вы создали ярлык? вы используете раскадровку или создаете ее в коде?   -  person Nevin Jethmalani    schedule 10.11.2017
comment
@NevinJethmalani Я создал ярлыки в самой раскадровке. я просто определяю свойства здесь. Вы хотите, чтобы я разместил скриншот свойств?   -  person Aakash Dave    schedule 10.11.2017
comment
Я просто хочу посмотреть, какие ограничения вы установили. На первый взгляд похоже, что ваша метка обрезается из-за конечного ограничения. Является ли это ячейкой таблицы или просто в vc или в прокрутке. Можете ли вы дать немного больше информации.   -  person Nevin Jethmalani    schedule 10.11.2017
comment
@NevinJethmalani Спасибо за ваш ответ. Я обновил свой вопрос. Пожалуйста, проверьте.   -  person Aakash Dave    schedule 10.11.2017
comment
Почему вы вызываете sizeToFit()? Вы вызываете sizeToFit() перед тем, как установить текст в метке? Различается ли текст между ячейками?   -  person PhoneyDeveloper    schedule 10.11.2017
comment
@PhoneyDeveloper Я хочу, чтобы текст меток был полностью выровнен по левому краю и начинался сверху. Текст в метках просто по центру по горизонтали и вертикали. И да, текст меняется в каждой ячейке.   -  person Aakash Dave    schedule 10.11.2017
comment
Вы создали выход для лейбла? Или вы используете свойство метки по умолчанию для tableViewCell и настраиваете количество строк для этого в своем коде?   -  person Nevin Jethmalani    schedule 11.11.2017
comment
Мне также нужно больше информации из вашей раскадровки. Очень сложно диагностировать проблемы с раскадровкой без всей информации об ограничениях. Это не кажется сложной проблемой, если вы предоставите всю информацию о том, как вы настроили представление.   -  person Nevin Jethmalani    schedule 11.11.2017
comment
@NevinJethmalani Хорошо, какая информация вам понадобится из раскадровки и кода. Дай мне знать. Я не могу опубликовать все скриншоты раскадровки. Пожалуйста, расскажи мне все. И я их обновлю. И спасибо за оперативную помощь.   -  person Aakash Dave    schedule 12.11.2017
comment
@NevinJethmalani Я решил проблему. Как упоминал #phoneyDeveloper. Я вызывал размер, чтобы соответствовать событию до того, как текст был установлен внутри, так как я использовал асинхронную функцию для загрузки текста с сервера.   -  person Aakash Dave    schedule 13.11.2017
comment
@PhoneyDeveloper Вы правы. I sizeToFit() вызывался до того, как мой текст был загружен и установлен. Спасибо за помощь. Вы также можете опубликовать ответ, чтобы я мог проголосовать и принять его.   -  person Aakash Dave    schedule 13.11.2017


Ответы (1)


Вам нужно вызвать sizeToFit() после того, как текст будет добавлен к метке, а не раньше.

person PhoneyDeveloper    schedule 13.11.2017