Метод UILabel sizeToFit работает неправильно

Я пытаюсь показать длинный фрагмент текста внутри UILabel в одной строке. UILabel является подзадачей UIScrollView, поэтому я могу прокручивать и видеть весь UILabel.

Моя проблема в том, что метод sizeToFit работает только частично.

textLabel.attributedText = attributedString;
textLabel.numberOfLines = 1;
[textLabel sizeToFit];
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);

Размер содержимого UIScrollView становится достаточно большим, чтобы показать весь UILable, но для строки, например:

поэтому я попытаюсь поделиться некоторыми из них здесь каждый раз. "

В UILabel показано:

поэтому я постараюсь поделиться som...

Что я делаю неправильно?

Ответы

Ответ 1

Оказывается, код очень хорош, но был проверен Use Autolayout. Непроверено - все работает просто отлично...

Ответ 2

Если вы хотите добиться этого, автоматическая компоновка будет простой. Просто убедитесь, что вы добавили numberOfLines

textView.adjustsFontSizeToFitWidth = YES;
textView.numberOfLines = 0;

Ответ 3

Удивительно, но если вы не установили ограничение на ширину метки, это сработало бы:

[textLabel.superview layoutSubviews];

Я узнал об этом путем проб и ошибок.

Ответ 4

попробуйте

textLabel.adjustsFontSizeToFitWidth  = YES;
textLabel.minimumFontScale      =  0.5;  

Ответ 6

Поскольку вы ограничили свой ярлык отображением только одной строки текста и усечением остальных, он ведет себя одинаково

textLabel.attributedText = attributedString;
textLabel.numberOfLines = 0;
[textLabel sizeToFit];
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);

Надеюсь, это поможет вам.

Ответ 7

Наиболее распространенная причина для sizeToFit не работает должным образом - это UILabel, не имеющее ограничений автоопределения, например, если вы неявно полагаетесь на позицию представления, остающуюся фиксированной относительно левого верхнего положения. Добавление любого ограничения вообще (ведущее, верхнее, центральное, любое) будет исправлять его, по-видимому, потому что это приведет к тому, что layoutSubviews будет вызываться в какой-то момент, как это было предложено в ответе Макстона Чан.