Ответ 1
Оказывается, код очень хорош, но был проверен Use Autolayout. Непроверено - все работает просто отлично...
Я пытаюсь показать длинный фрагмент текста внутри 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...
Что я делаю неправильно?
Оказывается, код очень хорош, но был проверен Use Autolayout. Непроверено - все работает просто отлично...
Если вы хотите добиться этого, автоматическая компоновка будет простой. Просто убедитесь, что вы добавили numberOfLines
textView.adjustsFontSizeToFitWidth = YES;
textView.numberOfLines = 0;
Удивительно, но если вы не установили ограничение на ширину метки, это сработало бы:
[textLabel.superview layoutSubviews];
Я узнал об этом путем проб и ошибок.
попробуйте
textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.minimumFontScale = 0.5;
Вы пробовали NSString sizeWithAttributes:?
Поскольку вы ограничили свой ярлык отображением только одной строки текста и усечением остальных, он ведет себя одинаково
textLabel.attributedText = attributedString;
textLabel.numberOfLines = 0;
[textLabel sizeToFit];
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);
Надеюсь, это поможет вам.
Наиболее распространенная причина для sizeToFit
не работает должным образом - это UILabel
, не имеющее ограничений автоопределения, например, если вы неявно полагаетесь на позицию представления, остающуюся фиксированной относительно левого верхнего положения. Добавление любого ограничения вообще (ведущее, верхнее, центральное, любое) будет исправлять его, по-видимому, потому что это приведет к тому, что layoutSubviews
будет вызываться в какой-то момент, как это было предложено в ответе Макстона Чан.