Overview
- すべてのビューはUIViewクラスまたはそのサブクラスを継承する.
- ビューは階層構造の中に組み込まれ,階層の頂点となるのはUIWindowのインスタンスである.UIWindowのインスタンスもまたビューのひとつである.
- 新たなビューを画面上に追加するときは必ずUIWindowのインスタンスに追加する.たとえば,ボタンやラベルなどの画面を構成するビューはUIWindowインスタンスに追加される.
- UIViewおよびUIViewのサブクラスは画面上に矩形のエリアを(部品)を描画する.
- UIVewのサブクラスはdrawRect:メソッドを実装する.このメソッドにより画面上に自分を描画する方法を知っている.
重要事項
- CGRect
- ビューの大きさと画面上の位置情報をもつ構造体.
struct CGRect {
CGPoint origin; // 作成するビューの原点座標.ウィンドウの左上からのx,y座標
CGSize size; // 原点座標からのwidth,height
};
typedef struct CGRect CGRect;
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
- CGRectMake
- CGRectを作成する関数
CGRect CGRectMake ( CGFloat x, CGFloat y, CGFloat width, CGFloat height);
- initWithFrame:
- CGRectを引数にビューインスタンスを作成するメソッド.[UIView alloc]で確保したメモリ領域をCGRectでフォーマットする.
- (id)initWithFrame:(CGRect)aRect;
- addSubview:
- ビューにサブビューを追加する
UIViewによるビューインスタンスの作成とビューへの追加
- UIViewによるビューオブジェクトの作成方法
CGRect viewRect = CGRectMake(10, 10, 100, 100);
UIView* myView = [[UIView alloc] initWithFrame:viewRect];
[myView setBackgroundColor:[UIColor lightGrayColor]];
[[selft window] addSubView:myView];
- UIVewのサブクラスを利用したビュー
- UIViewのサブクラスを作成することで柔軟なビューインスタンスの作成を行える.
- 描画メソッドを複数実装することで、複数のビューの描画に対応できる.
- UIViewを継承したサブクラスを作成する
- 作成したサブクラスはdrawRect:メソッドにより上位のビューに自分自身を描画する方法を実装する.
- サブクラスにはCGContextRefという描画コンテキストをもたせる必要がある.CGContextRefは描画するビューの状態を保持するコンテナのようなもので,色情報,描画位置などをもつ.
