Viewの取り扱い

Last-modified: 2012-08-18 (土) 18:25:53

Overview

see@http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

  • すべてのビューは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:
ビューにサブビューを追加する

スライド2.jpg

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のサブクラスを作成することで柔軟なビューインスタンスの作成を行える.
    • 描画メソッドを複数実装することで、複数のビューの描画に対応できる.
  1. UIViewを継承したサブクラスを作成する
  2. 作成したサブクラスはdrawRect:メソッドにより上位のビューに自分自身を描画する方法を実装する.
  3. サブクラスにはCGContextRefという描画コンテキストをもたせる必要がある.CGContextRefは描画するビューの状態を保持するコンテナのようなもので,色情報,描画位置などをもつ.