UIView の表示位置を変更する : Objective-C プログラミング

PROGRAM


UIView の表示位置を変更する

UIView の表示位置を変更したい場合には、frame プロパティの値を調整することで実現できます。

viewController.view.frame = CGRectMake(x, y, width, height);

"frame" プロパティは、その左上隅を示す "origin.x" や "origin.y" と、幅と高さを示す "size.width" や "size.height" といったプロパティを持っていますが、これらを編集することはできないようなので、CGRectMake 関数を使ってこれらを一新しています。

このようにすることで、新たに "frame" プロパティに設定した場所に UIView の位置を移動することができました。

 

なお、UIView はもうひとつ "bounds" というプロパティを持っていますが、こちらは UIView が持っている領域のうちの、どの部分を "frame" 内にクリッピングして表示するかという情報になるようでした。

 

UIView を別の UIView の中央に表示させたい場合

UIView は "frame" プロパティの値を調整することで、表示位置を任意に変更することができます。

よって、あるビューの中央に表示させたいような場合にも、適切な座標を計算して、それを設定してあげれば実現可能です。

 

順序立てて計算していけば、それほど難しいことはないですが、2 つの UIView からその中央を示す CGRect を取得するメソッドを作成してみたので、参考として記しておこうと思います。

// 2 つの UIView から、その中央に位置する CGRect を取得します。

+ (CGRect)getCenterFrameWithView:(UIView*)argView parent:(UIView*)argParentView

{

CGFloat x;

CGFloat y;

CGFloat width;

CGFloat height;

 

CGFloat margin_x;

CGFloat margin_y;

 

width = argView.frame.size.width;

height = argView.frame.size.height;

 

margin_x = argParentView.frame.size.width - width;

margin_y = argParentView.frame.size.height - height;

 

x = margin_x / 2.0f;

y = margin_y / 2.0f;

 

return CGRectMake(x, y, width, height);

}

このメソッドに表示したい UIView とその親となる UIView を渡してあげれば、それぞれの "frame" のサイズから、中央に位置する CGRect の値を計算して戻り値として返すので、それを表示したい UIView の "frame" に設定してあげることで、任意のサイズの UIView を中央に表示させることができます。

[ もどる ]