Вопрос

Я пытаюсь показать длинный кусок текста внутри 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:

Так что я постараюсь поделиться сомом ...

Что я делаю не так?

Это было полезно?

Решение

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

Другие советы

If you want to achieve this with auto layout turned on it's simple. Just make sure you add numberOfLines

textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 0;

Surprisingly, if you did not put a constraint on the label's width, this would work:

[textLabel.superview layoutSubviews];

I learned this by trial and error.

try

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

Since you have restricted your Label to show only one line of Text and truncate the rest , it is behaving the same

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

Hope it will help you

The most common reason for sizeToFit not working properly is the UILabel not having any autolayout constraints, for instance if you're implicitly relying on the view position remaining fixed relative to the top left. Adding any constraint at all (leading, top, centerY, anything) will fix it, presumably because it will result in layoutSubviews being called at some point, as suggested in Maxthon Chan's answer.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top