とりあえずnull

プログラミングの勉強日記

UIViewの基本的な使い方

UIViewはiPhoneアプリ等で画面表示を管理するクラスのことらしいです。とりあえずiPhoneアプリ作るとき、画面に表示させたいパーツとかはこのクラスから作られるっぽいです。ガンガン使えるようになりたいと思います。

でもその前に基本的なところから。

UIViewの基本的な使い方

UIViewを使うためにはいくつか準備が必要。

  1. メモリを確保し、インスタンス化する
  2. 初期設定で必要なパーツの幅や高さを指定してあげる
  3. self.view(画面におかえる一番下の地面みたいな部分)にのっける(出力させる)

ってことで上記の作業をコードでみていくことにします。

// 1. メモリを確保し、インスタンス化する
UIView *view = [[UIView alloc] init];

// 2. 初期設定で必要なパーツの幅や高さを指定してあげる
view.frame = CGRectMake(0, 0, 100, 100);

// 3. self.view(画面におかえる一番下の地面みたいな部分)にのっける(出力させる)
[self.view addSubview:view];

1と2をまとめて

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 30, 100, 100)];

といったふうに書くこともできる。

実験

背景赤のself.viewに背景白(幅:100, 高さ:100)のUIViewを表示させる

// hogeViewController.m
- (void)viewDidLoad {
    [super viewDidLoad];
    
    // self.viewの背景を赤に設定  
    self.view.backgroundColor = [UIColor redColor];  
  
    // UIViewクラスのインスタンスを変数viewに設定。(メモリ確保+領域指定)  
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];  
  
    // 変数viewの背景を白に設定  
    view.backgroundColor = [UIColor whiteColor];  
  
    // self.viewの上にviewをのっける(表示させる)  
    [self.view addSubview:view];  
@end  

f:id:noriven:20150324082444p:plain

UIViewのサブクラス含めた基本的な作業の流れ

やはり

  1. メモリを確保し、インスタンス化する
  2. 初期設定で必要なパーツの幅や高さを指定してあげる
  3. self.view(画面におかえる一番下の地面みたいな部分)にのっける(出力させる)

となっており、例えばUIViewのサブクラスであるUILabelであったとしても、

UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, width, 30)];
name.text = @"hoge";
[self.view addSubview:name];

といったように1〜3の流れを周到しながら作業を進めていくことになる。

個人的な感想

いままでStoryBoard上でしかアプリ制作をしたことがなかったので、他者がコードオンリーで書いたアプリのソースコードなんかをみるとわけがわからない状態にあった。しかもいざ自分でコードオンリーでアプリを作ろうとすると領域指定していないとエラーだとか必要な設定がないからエラーだとか訳分からんままで理解ができなかった。なので当たり前なんだけど、特にiOS開発では初期の段階から正確な構造の理解が必要なんだなぁとしみじみ思いました。