woshidan's blog

あいとゆうきとITと、とっておきの話。

mixi iOS training 第5回分についてメモ

5回分の内容を投下。諦めないの大事(と言いつつサッカーボール買ってました)。

UIVIew Animation

アニメーションをつけるときは、-(void)viewDidAppearあたりで、 UIView transitionWithView: dutation: options: animations: completion:メソッドを呼びます。

animationsに与えるブロックの中でたとえば以下のようなことができます。

// ojisan .. は課題で使っていたUIImageViewのインスタンス名
// 表示、非表示の切り替え
  animations:^{
      _ojisanImageView1.hidden = YES;
      _ojisanImageView2.hidden = NO;
  }

// 位置を移動させる
// static CGRect const kOjisanMovedFrame = {{320, 586}, {170, 170}};
[_ojisanImageView setFrame:kOjisanMovedFrame];

Auto Layout 入門

これまでの講座の内容ではUIViewのレイアウトを適当においていたのですが、 それをきっちりやる方法についての章でした。

パーツのリサイズには、 AutoLayout と Auto Resizing があります。 AutoLayoutは比較的新しいトピックで、iOS6OS X 10.6以降で利用できます。(iOS5.xでは実行時エラー)

AutoLayoutでは主に以下の2つの指定が出来ます

Pin

親ビューの上や左から何ポイント離すか、兄弟Viewとの間隔、あるいはviewの幅や高さを指定できます

Align

Interface Builder で設定しているときのように、隣り合うビューとviewの端を揃える指定ができます

設定した制約はInterface BuilderのDocument Outlineから確認できます。

単体にかかってくる制約(そのコンポーネントのwidthなど)はView直下に、
trailing spaceなどView全体にかかってくる制約はConstraints以下に追加され、
ユーザが設定した制約は青、Interface Builderが補完した制約は紫に表示されています。

なお、UILabelの行数(Lines)を0にすると最大行が無限となり、 UILabelのラベルの変数の長さに合わせてUILabelが伸びます。

Auto Layoutを使う時は一度配置した後にレイアウトを変更したときにその変更が反映されない、などの注意点があります。

(メニューの一番右のボタンを押すと更新されます)

実際に入門のドリルをやってみたときの記録はこちら です。