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 を中央に表示させることができます。
[ もどる ]