この本を見ながら進めてる↓
前回⇒「【Swift奮闘記ep40】図鑑アプリを作ってみたpart2(UIKitフレームワーク)」
ラストは写真ビューアプリ。
一番難易度が高いということだったが、記事にする前に一通り読んでアプリ作成もしてみた。
結局2~3時間くらいかけて理解したのだが、結構大変だった。
簡単に何をやったか説明していく。
今回使うのはUIKit・Photosフレームワーク
前回の図鑑アプリで使ったUITableViewやUITableViewCellと同じような使い方をする。
UIKitフレームワークでセルをどのように配置するか決めたり、大きさやセルの数やレイアウトを決めて、その上にPhotosフレームワークで写真を取得したり表示させたりする。
だから図鑑アプリの応用編と言ってもいい感じ。
ユーザー許可の設定
iOSユーザーの写真をデータを取得するので許可を得る必要がある。
これはマップアプリでもやったので説明がかなり簡素化されている。
UICollectionViewの配置とレイアウト
UIKitフレームワークの中のUICollectionViewとUICollectionViewCellを使うのだが、これはUITableViewやUITableViewCellと同じ役割を果たす。
ちなみにUICollectionViewを配置したら、自動的にUICollectionViewCellも配置される。
その上にUIImageViewをドラッグアンドドロップ。そしてタグを設定する。
タグっていったいなんだ?って思うけど、ビューに番号を付けるみたいに思えばよい。今回1にしたので、UIImageViewはタグ1とすれば呼び出せることになる。
アウトレット接続する。ここまでは簡単。
デリゲートの使用
デリゲートは図鑑アプリでも出てきたが、セルの数を取得したり、マージンの設定したりするので重要。
3つのデリゲートを駆使する。
プロトコルに準拠させる処理させて、collectionView(_numberOfItemsInSection:)メソッドとcollectionView(_:cellForItemAt:)メソッドを設置。仮の値を戻り値としておく。
セルのカスタマイズ
collectionView(_:layout:sizeForItemAt:)メソッドを実装させる。ここでセルの幅をViewControllerの3分の1に設定したり、CGSizeで幅をwidth、高さもwidthに設定したりする。
またCGFloatで縦横のマージンを設定する。今回はどちらも0。
Photosフレームワークを用いて写真データの取得
大きな流れだけ説明する。
PHAssetが写真データを取得して、PHFetchResultがそれを管理する。
画像のデータに関してはPHImageManagerというところで管理される。
つまりPHAssetがどの画像を表示させるかの指示をして(インデックス番号で)、PHImageManagerという倉庫的な場所から画像を運んで表示させる的な考え方だ。
非同期処理
あまり聞きなれない言葉だが、非同期処理というのが出てきた。
これは即時的でない処理を待ち受けるような処理方法のことだ。
つまり、ユーザーに許可をリクエストしたとして、その返事がすぐ来なかった場合、それを待っていたら一切先へ進まない。
許可が出なくても前へ進むことができる(全て同期しない)のが非同期処理という事なのではないだろうか(予測)。
例えば写真ビューアプリを実行させた時も、ユーザーに許可をリクエストして、返答が来るまでの間プログラムをストップさせるんじゃなくて、写真を取得する以外の処理を進めちゃうんじゃないかなって思う。
ただ、重要な処理は進めず、それはハンドラの中に記述して合って、返答が来たらハンドラが発動するっていう仕組み。っぽい。
たくさんメソッドが出てくるが
もう今まで見た事がないメソッドばかり出てきて滅入ってしまいそうだったが、意外と楽しい。
例えばIndexSetというストラクチャに関して、指定したインデックスのインスタンスをセットでまとめる機能がある。とか。
途中クロージャが出てきてさっぱりわからなくなった場所もあったが、何とか乗り切った。
大きな流れを覚えて、たくさん出てくるメソッド等も一度使い方とか見ておくだけで、次に出会った時は意外と使いこなせる可能性もある。
実行してみたらうまくいった。一発成功、よかった。
最後に
今は意味が分からなくてなんとなく突き進んだっていう人はたくさんいるかもしれないが、違う本を見てからまたこの本をおさらいで見たときは、「あれ?簡単じゃん、なんで前こんなところでつまづいてたんだ??」ってなるの間違いなしだから、とりあえずマジでここまで突っ走って正解だと思う。
なんとか一冊読み終わって、ほっとした。
実はもう次の本を買っている。ふふふ。
まあ取りあえずおつかれさん!
続き⇒「【Swift奮闘記ep42】《2冊目》ノンプログラマーのためのSwiftブック(ゼロから作ろう!iPhoneアプリ)」
コメント