14

フレームの原点をプログラムで設定しようとしています。

方法1:

button.frame.origin.y = 100;

方法 2:

CGRect frame = button.frame;
frame.origin.y = 100;

方法 1 を試しましたが、機能しません (式が割り当てられないというエラーが表示されます)。方法 2 が機能しています。これはなぜですか?

私が正しく行っていることについてのガイダンスが必要です。

4

4 に答える 4

3

button.frame.origin.yあなたは値を返すことを知っ ています。

これを使用していると、このエラーが発生します...

式は代入できません。

button.frame.origin.y = 100;

だからこれは正しい方法です

CGRect frame = button.frame;
frame.origin.y = 100;

それ以外の場合は、このようにすることができます...

button.frame = CGRectMake(button.frame.origin.x, 100, button.frame.size.width, button.frame.size.height)
于 2013-05-02T07:27:25.567 に答える
1

これは、フレームの原点またはサイズを直接変更できた場合、UIView のフレーム プロパティのセッター メソッドをバイパスするためです。これは、複数の理由で好ましくありません。

UIView は、フレームの変更について通知を受ける機会がありません。ただし、サブビューを更新したり、それ自体を再描画したりできるようにするには、これらの変更について知る必要があります。

于 2013-05-02T07:38:36.273 に答える