0

更新:この問題を解決できないため、醜い回避策を実行しました (別のラベルを追加しました)。

現在、次の手順で UILabel の位置を設定しようとしています。

1) ラベルのテキストを更新する

lblFirstWheelDescription.text = @"Select the tooth shade";

2) UILabel の新しい位置を設定する

CGRect newframe = lblFirstWheelDescription.frame;
newframe.origin.y += 100;
lblFirstWheelDescription.frame = newframe;

今、私を混乱させているのは何ですか。メソッドが初めて呼び出されると、何も起こりません (UILabel は以前に設定したようには動きません)。2 回目の呼び出し (同じメソッド) では、lblFirstWheelDescription.frame の初期の y 値は 100 増加していません。

次のように再描画を強制しようとしました-何も変更しません:

[self.superview setNeedsLayout];

誰かがこの動作を知っているか、ここで何が悪いのか知っていますか?

イフカウィス

4

5 に答える 5

0

ラベルを再描画する必要があります。ビューコントローラーがビューを再描画すると、ビューが呼び出されます。ビューでラベルを強制的に再描画する必要があります。

于 2013-03-08T10:10:33.047 に答える
0

ビューコントローラーから setNeedsDisplay を呼び出す必要があります

[ViewController.view setNeedsDisplay];

これにより、ビューとそのサブビューが強制的に更新/再描画されます

于 2016-02-02T03:43:52.680 に答える
0

実際には呼び出されていないのに、関数が呼び出されていると想定しているのかもしれません。ロギング ステートメントNSLog("TESTING");を追加して、関数がいつ、何回呼び出されているかを確認してみてください。

また、この関数を呼び出すのは何ですか?

于 2013-03-08T10:09:43.957 に答える
0

必要に応じてラベルを更新できますが、このリンクから表示したいこのループでラベルを再描画する必要があります

Mert の回答を確認する

于 2014-03-11T18:00:16.240 に答える