woshidan's loose leaf

ぼんやり勉強しています

3.1 UIView

後追いで、
https://github.com/mixi-inc/iOSTraining/wiki/3.1-UIView
を読んでいます。

学び始めはなんだって感動しますし、ojisan.pngと入れてOJISANが出てくる事にも感動しますよね。 昨日分を少し整理して投下。

  • UIViewってStoryboard上でViewを選択したときに載せられるラベルとかで乗せる自体は難しくないですよ
    • 乗せたあとコードからSubViewを足したり、Labelの文字を変更したい場合は、viewDidLoad当たりでやろうね。
    • Viewをコードで作りたい場合はinitWithFrameメソッドを使うよ. FrameというのはCGRectクラス(長方形みたいなの)だよ
      • LabelだろうがTextViewだろうがなんでもFrameにあたるCGrectクラスのインスタンスを渡す必要がある!
// this code is incited from https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html
CGRect  viewRect = CGRectMake(10, 10, 100, 100); // 原点(10, 10) 大きさ100x100
UIView* myView = [[UIView alloc] initWithFrame:viewRect];
// [[UIView(or SubClass) alloc] initWithFrame:...]の形
  • ImageViewでファイル名を叩き込んでpngが表示されたとき地味に感動した
    • 本当は、プロパティをセットするためのメソッドを調べて、imageプロパティにサーバから取得した画像に入れ替える、みたいな書き方をしそう
    • 本当はXcode経由で画像ファイルをaddするのだと分かったときがもうちょっと感動した
  • UIButtonを定義するときの定義について
[button setTitle:@"button" forState:UIControlStateNormal];
// タイトル(ボタン上の文字列)といつ表示されるタイトルなのか(forStatr)
[button addTarget:self action:@selector(handle:) forControlEvents:UIControlEventTouchUpInside];
// ボタンが押された事になるのはどのようなときか. 一番後ろは中側をタッチときに押した事になる、ということ
  • 単純なラベルを表現するサブクラスがUILabel

    • 1行のみの入力を行う際に利用するクラスがUITextField
    • UITextViewはリッチなテキストの表示、入力を行う際に利用
      • テキストの変更等は、UITextViewDelegateを利用して取得
  • UIViewには色々パラメータがあるけど一番気になったのは、hidden. デバッグで使いそうなのはbackgroundColor

  • UIViewは階層構造になっていて、下の階層のViewはsubViewsで管理されている
    • 実際に演習で取り出してみたときのコードは以下。
for (UIView *view in self.view.subviews) {
  if ([view isKindOfClass:[UIImageView class]]) {
    [view removeFromSuperview];
  }
}
  • Viewのstrech機能を使う事で画像の引き延ばし可能領域を設定する事が可能