iOSアプリの基本的な構造を学ぶPart11
今日はファイルの読み込み/書き込みが出来るアプリおよび、カメラアプリ、シェアボタンのあるアプリの実装をしてみました。
①ファイルの読み込み/書き込みが出来るアプリ
Cancelボタンにeditcancelのメソッド、DoneボタンにeditDoneのメソッドをアクション接続して実装するのですが、その際ボタンの実装で初めて出てきたのがloadFileメソッドとsaveFileメソッドでした。loadFileメソッド、saveFileメソッドの流れは非常に大切なので覚えておこうと思います。
②カメラを起動するアプリ
このアプリはカメラアイコンでカメラを起動して撮った写真を画面上のイメージビューに表示するというものです。これも他のアプリ同様にカメラボタンがカメラ機能をUIImagePickerControllerクラスで実装し、それで撮った結果をImageViewのプロパティに接続して表示させるという手順を踏みます。
コードは全く問題ないかと思うのですが、エラーが出ました!該当のエラーをコピペして調べてみた所、xcode5のiOSシミュレータでCannot find executable for CFBundleが出る | もぐめぽろぐに対策があったのですが、やはり直りません。
察するに僕はiphoneの実機を持っておらず実機でないとカメラ機能は使えないためシミュレータが悲鳴を挙げているのかと思います汗
③シェアボタンのあるアプリ
このアプリも②のアプリ同様、シミュレータでは実行できないものと思われます(同じ内容のエラーでした)。早く実機を買わなきゃと思います。
うまくいくと以下のようにシェアできるアプリケーションの一覧が出るそうです。。。
歯がゆい。。。。
今回で分厚い2冊目のテキストが終わりました。明日からはUIKitや実際的なアプリ制作について学べて行けたらと思います。
下記GitHubのURLです。
iOSアプリの基本的な構造を学ぶPart10
今回はデリゲート処理の練習をかねて3つのプロジェクトを作りました。
ちなみにデリゲート処理とはあるクラスだけでは処理できない命令を、そのクラスの変わりに行うクラスに引き渡すことです。
ちなみにどのクラスもデリゲート(代理人)になることができます。
デリゲートの処理の手順としては、
Ⅰ.UIパーツとデリゲート(先のクラス)を接続する
Ⅱ.デリゲート(先のクラス)にプロトコル名を書く
Ⅲ.デリゲート(先のクラス)に処理を書く
という様になっております。
①選択肢を選ぶアプリ
②パスワードを入力する
③選択肢を増やしたアプリ
次回はファイルの書き込み/読み込みのアプリを載せます。
下記GitHubのURLです。
iOSアプリの基本的な構造を学ぶPart9
今回もいくつかの作成したアプリケーションの学習の記録をします。
今回作ったのはイベント管理系のアプリです。
①画像を2本指で回転するアプリ
UIGestureRecognizerクラスのRotationメソッドを実装して回転した時の動作で更新/保存します。if文で制御しています。UIRecognizerStateBegan(始まったとき)は前回の処理と同じ、UIRecognizerStateChanged(変わったとき)は変更、UIRecognizerStateEnded(終わったとき)は引数senderを渡すという感じで角度を保存するアプリが出来上がりました。
②2本指で画像を拡大するアプリ
以下省略(申し訳ない)
③スワイプでメニューを出すアプリ
左から出てくるオレンジ系の色のメニューはViewControllerで、白色の猫の画像がある画面がViewです。UIGestureRecognizerクラスのSwipeGesture Recognizerのイベントを使用してスワイプでメニューが出てくるアプリを実装しました。
次回はデリゲート処理系のアプリを載せます。
下記GitHubのURLです。
iOSアプリの基本的な構造を学ぶPart8
今日はイベント管理を学びました。
イベントとは、スワイプやドラッグで動かす動作、ピンチイン/ピンチインで発生する動作のことをいいます。
まず、イベントを設定するのにはインターフェースビルダのGesture Recognizerを使います。
各GestureRecognizerの種類とイベントは簡単に以下のようになります。
今回はこのイベント管理をベースに学んで行きます。
今日作ったのは以下のようなアプリです。
犬の画像をタップすると犬が画面内でランダムに移動するというものです。構造としてはImageViewで犬の画像を設定し、その上にタップのイベントを上乗せし、そのあとにImageViewはアウトレット接続、イベントはアクション接続します。最後にアウトレット接続した犬のdogインスタンスを上手く使いながら、アクション接続したイベントのメソッドがどのようなメソッドなのかを実装して完成です(笑)!
このアプリをベースにして、他にも、
①タップした場所に画像が移動するアプリ
②ダブルタップすると画像が三倍の大きさになるアプリ
などを作りましたが、今日はインターンでしたので全部の内容は報告出来ません。
明日はガッツリ他のピンチインやドラッグなどのイベント処理もやり終えるのが目標です。
今日も内容短いですが、Gitには全部のコードを上げておりますので、気になった方はそちらをごらんください。
下記GitHubのURLです。
DaikiHosokawa/practice · GitHub
iOSアプリの基本的な構造を学ぶPart7
今回は、GUI部品の扱いをストーリーボードからではなくコードから1からつくってみて学びます。コードから入ると色や大きさなどのプロパティの設定や動作などを詳細に設定することが出来ます。
①UILabelの練習
今まではGUI部品からドラッグ&ドロップしてデフォルトのプロパティのままシミュレータで表示していましたが、今回はプログラムからUIラベルを作りました。
手順としては①領域を決める(座標と幅、高さ)→②プロパティ設定(テキスト、寄せ、文字色、背景色)→③部品(Label)をView(本体画面)に追加という流れです。
UILabelクラスからmyLabelインスタンスを作って、そこに色んなプロパティでアクセス出来るということ、CGRectMake()メソッドを新しく学べたのが良かったです。
②UISwitchの練習
まず、はじめにSwitchをアクション接続(on,offで動きが出る接続)&ImageViewをアウトレット接続でつないで、次にImageViewのプロパティを変えて行くのですが、11~15行でUIImageクラスからimageDataインスタンスを宣言し、さらにアウトレット接続の際にImageViewのクラスからimageholderインスタンスを宣言しているのでそこを上手く使います。手順は①imageDataにimageNamed関数でプロフィール画像を読み込ませ②大きさを決め③背景色を決め④imageholderのイメージにimageData(プロフィール画像)を入れます。これで、シミュレータでプロフィール画像が表示されます。
ですが、今回はswitchを使ってon/offで写真のon/offを切り替えれるようにします。if文を使ってonの時はimageDataを表示、offの時はnilで表示無しにします。
③UIButtonの練習
大まかな手順としては①UIButtonクラスからbuttonインスタンスをつくる②buttonインスタンスのframeプロパティにCGRect()で領域の大きさを代入する③ボタンの背景画像となるイメージをよみこむ④イメージをリサイズする⑤イメージを背景をUIButtonの背景に設定する⑤addTarget:(id) action....でアクションを送る相手と使うアクションを設定する(ここでhelloメソッドを引っ張ってくる)⑥ボタンをビューに追加する
となっております。
これからの更新は一日一回としたいなと思います。
僕は今考えているアプリのプロトタイプをつくることを最大の目標としているので、自分の習得スピードを最重要に考えていこうと思います。
すこし更新は少なくなるかも知れませんが今後も引き続きブログを通して学んだ内容を咀嚼していきたいと思いますので宜しくお願い致します。
下記GitHubのURLです。
DaikiHosokawa/practice · GitHub
iOSアプリの基本的な構造を学ぶPart6
まず最初に今回はGUI部品のスライダーを使って、スライダーの数値をログや画面に表示するアプリを作りたいと思います。手順としては
①GUI部品Sliderをキャンパスに設置
②アウトレット接続してプロパティ作成&アクション接続
③インタープリテーションセクションにメソッドのひな形が出来るので、そこに処理の内容を実装
です。
以下のようなコードになりました。
シュミレータを起動してスライダーをいじってみると、実際にログには以下のように表示されます。成功です。
ですが、これを画面上に結果を表示するものにしようとするとこれだけでは不十分です。今回アクション接続の際にTypeを引数senderのデータ型はid型だからです。id型だとUISliderのメソッドやプロパティは利用できません。なのでアクション接続の際にTypeをUISliderに変えます。
更に次にラベルを接続します。今回は実装ファイル(.m)ではなく、ヘッダファイル(.h)に実装します。ヘッダファイルに接続する特徴としては、実装ファイルのクラスエクステンションと接続した場合と異なり、他のクラスからもアクセスできるプロパティ、メソッドとなります。
ヘッダーファイルへのアクション接続でも、実装ファイルへのメソッドの定義文は追加されているので、実際に動かすためにそちらもコーディングします。
シュミレーターで見ると以下のようになってました。
下記GitHubのURLです。
DaikiHosokawa/practice · GitHub
iOSアプリの基本的な構造を学ぶPart5
ストーリボード右側にあるユーティリティエリアのbutton,TextField,SwitchなどのGUI部品は単なるイメージではなく、UILabel,UIButton,etc...というクラスのインスタンスとして動作します。
まずはやってみます。
①TextFieldをキャンパスに配置してみる
ですが、このオブジェクトは実際にプログラムで参照しなくてはなりません。
接続出来るのは、TextFieldが配置されているViewController.hおよびViewController.mに限ります。
②接続
IBOutletとはアウトレット接続を示しています。これは今回の結論となりますが、
です。
③メソッドの実装
結果として実装したとおりにエミュレータでは表示されます。
進捗が遅いように思うので、ちょっと急ぎ目で行きます。
下記GitHubのURLです。