23

UILabel 内のテキストの長いチャンクを 1 行で表示しようとしています。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 は次を示します。

だから私はいくつかを共有しようとします...

私は何を間違っていますか?

4

6 に答える 6

29

コードは問題ないことがわかりましたが、[自動レイアウトを使用] がチェックされていました。チェックを外しました-すべてがうまく機能します...

于 2013-11-18T08:25:34.253 に答える
23

自動レイアウトをオンにしてこれを実現したい場合は簡単です。必ず追加してくださいnumberOfLines

textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 0;
于 2014-07-15T06:55:07.990 に答える
2

try

textLabel.adjustsFontSizeToFitWidth  = YES;
textLabel.minimumFontScale      =  0.5;  
于 2013-11-18T08:24:09.510 に答える
1

sizeToFit正しく動作しない最も一般的な理由は、UILabel自動レイアウトの制約がないことです。たとえば、ビューの位置が左上に対して固定されていることに暗黙のうちに依存している場合などです。layoutSubviewsMaxthon Chan's answer で示唆されているように、何らかの制約 (leading、top、centerY、何でも) を追加すると、おそらくある時点で呼び出されるため、それが修正されます。

于 2016-07-18T17:21:21.020 に答える