2010-12-10 13 views
10

私はUIViewを配置しようと数時間を費やし、最終的にビューフレームを変更する必要があることを理解しました。だから私は、私はこれがないかもしれないと思わせるUIViewsは既にこの方法を持っていない理由を私は理解していないように、簡単なようだが、このUIViewの配置方法は?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

のようなのUIViewControllerサブクラス、に「setPosition」メソッドを追加しましたそれを行う正しい方法です。だからそれは私の質問です...

この方法はOKですか、何かしていませんか何か理由がありますか?

答えて

12

ここでやったように、フレームをもう一度コピー、変更、設定する方法が一般的に行われています。これは、RECTを作成し、それを直接設定することによって行うことができます。

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

これらの変更をアニメーション化しますアニメーションブロックでこれを行います。

Alternitivelyあなたが望む中心点を設定することができます。

UIView.center = CGPointMake(50,50);

+0

あなたがIBOutletsのリファレンスを持っていて、プログラマチックにしか作成できない要素を配置したい場合は、フレームとして使用するUIView(myFrame)を作成し、MyCustomView.frame = [myFrame bounds]メインビューコンテナへのMyCustomView – jay

2

その他の方法:

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

これを私はサイズパラメータを保存し、唯一の原点を変更します。

関連する問題