android開発者がiPhoneアプリを開発するまでのメモ1

今までAndroidアプリを開発していた僕がiPhoneアプリを開発するまでの理解のメモしていこうと思う。

開発環境&前提条件

  • Xcode6.2
  • Objective-C
  • Storyboard
  • autolayout
  • ARC

SingleViewApplicationを理解

何はともあれ作ってみる。

プロジェクトの作成

まずはプロジェクトの作成。以下をやるととりあえず出来上がる。

  • [File -> New -> Project]から[Single View Application]を選択

自動生成ファイルの説明

AppDelegate.h/m
Androidで言うところのApplicationだと思う
MainView.storyboard
layoutファイル。main_activity.xmlと同じと思えばいい
MainViewController.h/m
Viewを動かすためのソース。hがヘッダで、mが中身
info.plist
設定ファイル
main.m
アプリを起動するファイル。気にしなくていいと思う

起動の仕組み

  • main.mのmain関数が起動
  • main関数に記載されているAppDelegateクラスが起動
  • info.plistの[Launch screen interface file base name]に記載されたxibが起動
  • info.plistの[Main storyboard file base name]に記載されたstoryboardが起動
  • MainView.storyboardの[Custom Class]に記載されているClassが起動

storyboardにコンポーネントを配置

  • 画面右下のコンポーネントから配置したいものを持ってくる
  • 画面上でずらして調整してもレスポンシブにならない。端末の画面サイズによってずれる
  • 画面サイズは画面左上のアイコンの左から4番目を選択して出てくる[Simulated Metrics -> Size]からデバイスを選択することで変更できる
  • 位置調整はRelatvieLayoutと考えれば良さそう
  • Viewが表示されている画面下にいるアイコンたちで位置調整を行う
  • 一番左が要素同士の位置調整。親の中央とかViewの右側とか相対的な条件はここで設定する
  • 左から二番目で要素の大きさとか左に2px移動とかの絶対的な条件を設定する
  • 変更したら左から三番目の[Update Frames]で再描画しないとワーニングが出る

コンポーネントとコードのヒモ付

  • findViewByIdみたいにコードで紐付けを記載せずにUI上で紐付けを行うっぽい
  • 画面右上にある3つのボタンの真ん中をタップして画面をソースコードとstoryboardでわける
  • storyboardから紐付けたいViewを選択
  • 画面右上の一番右のアイコンを選択
  • なんか色々書いてあるやつの○を挿入したいコードの部分に持って行くと紐付けられる
  • 参照を持ってきたい場合は[Referencing Outlets]でもってこれる
  • 持ってきたものにeventを設定するわけじゃなくてeventもUI上で設定するっぽい
  • イベントを持ってきたい場合は[Sent Events]

h/mの使い分け

  • hは外部参照用のファイル。定義ファイル群となり、外部から参照する必要がある値、関数(public)をここに記載する
  • mは実装ファイル。関数の実装を記載する。private。

ボタンを押したらtextfieldの値を撮ってきてLabelの値を変更

@interface MainViewController ()

@property (strong, nonatomic) IBOutlet UILabel *label;
@property (strong, nonatomic) IBOutlet UITextField *textField;

@end

@implementation MainViewController

// 割愛...

- (IBAction)buttonClick:(id)sender {
    [self.label setText:[self.textField text]];
}

@end
  • buttonClickはstoryboard上で[Sent Events]の[touch up inside]と紐付けている
  • labelとtextFieldsは[Referencing Outlets]で挿入
  • propertyの値はselfで参照する

まとめ

とりあえずSingleViewApplicationはできるっぽい。あとはUIKitのAPIリファレンスとか見ながら必要に応じて記載していけばいいんだと思う。UI上で色々できるのは便利だけど、作ったあとにコードだけを見てどの要素とどのコードが紐付いているかがわからないのかはちょっと不便。いかに直感的な名前をつけるかでコードの読みやすさが大幅に変わりそうな予感がする。

リンク