1

私は初心者です。私はUILabelフィールドのテキストプロパティを設定しているiOSプロジェクトを持っています。Cocoa - iOS - UILabelのテキストプロパティを更新するにはsetNeedsDisplayが必要ですか?

self.nameLabel.text = @"abcd"; 

質問

  • は、私が表示される新しいテキスト値のラベルのためのsetNeedsDisplayInRectを起動する必要がありますか?

いくつかのテストに基づいて、私の理解: setNeedsDisplayInRectを起動せずに

  • 、ラベルのテキストが更新された、
  • が、私は、それは偶然の一致だったかということgauranteedされたかどうかを知りたいですラベルは明示的にsetNeedsDisplayを呼び出さずに新しい値を表示します

ありがとうございました

答えて

1

UILabelは、textプロパティを設定したときに更新に必要なすべてを行います。他のプロパティ(fonttextColorなど)と同じです。手作業で行う必要があるのは(IBを使用していない場合)frameです。

+0

おかげで多くのことを、私は何についての1つの疑問を持っていますあなたが言った。コードでフレームを設定するかどうかを明確にするために、setNeedsDisplayを呼び出す必要がありますか? – user1046037

+0

いいえ、UIKitはそれを処理します。多くの人がフレームを設定せずに 'UILabel'を追加して(実際には' bounds')、それがなぜ表示されないのか疑問に思うので、 'frame'しか言及しませんでした。多くの場合、通常は '[label sizeToFit]'が適切です。 – smparkes

+0

もう一度ご理解いただきありがとうございます! – user1046037

0

ラベルは、テキストの更新にもかかわらず、更新されない場合は、お使いのCPUが十分に利用されてもよいし、次のコマンドは、リフレッシュを強制します:プロンプトの回答のため

self.nameLabel.text = @"abcd"; 
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; 
関連する問題