2009-09-07 8 views
1

私はコントロールの位置を設定する最も簡単な方法を見つけようとしています。iPhone>コントロールの位置を設定する

だから、これはオブジェクト+ 100pxに設定して動作します:

[panel setFrame:CGRectMake(
    panel.frame.origin.x, panel.frame.origin.y + 100, 
    panel.bounds.size.width, panel.bounds.size.height) 
]; 

をしかし、もちろん、これは痛いです。

残念ながら、これは動作しません:

panel.frame.origin.y += 100; // Compiler error 

[panel setPosY:100]; // has no effect of my control 

が位置を設定する簡単な方法はないですか?

panel.center = CGPointMake(panel.center.x, panel.center.y + 100);

おそらくこれを行うための最も簡単な方法です:

答えて

3

あなたは常にオブジェクトの中心プロパティを使用することができます。

+0

、 – rluba

+0

ああ、あなたの両方のおかげで、 は私が名前「センター」 について混乱していた。しかし、なぜ、これは直接ではありません:-)私のものよりも優れで許可される方法Obj-C? panel.center.y + = 100; –

+0

これはプロパティのトリックです。 panel.centerは実際にはCGRect構造体を返すメソッド呼び出しです。オブジェクトのフレームインスタンス変数に直接アクセスすることはできません。したがって、その構造体を変更すると、元の構造体(オブジェクトのメモリ空間内)は変更されません。 –

1

これは動作し、あなたの最初のコードよりも少し短い必要があります。それでも

CGRect frame = panel.frame; 
frame.origin.y += 100; 
panel.frame = frame; 

はないが、非常にきれい。あなたが道の外に移動し、長さを短くしたい場合には

0

(それは同じ場所で終わるので)次の(アイデアに感謝のラチャ)を試してみたいことがあります

// Make space at start of label 
    CGRect frame = mainLabel.frame; 
    frame.origin.x += 100; 
    frame.size.width -= 100; 
    mainLabel.frame = frame; 
2
私の知っている

最もエレガントな方法は次のとおりです。

合意
panel.frame = CGRectOffset(panel.frame, 0.0f, 100.0f); 
関連する問題