井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

アプリ第2弾リリースしました。

絵を壁に飾ったらどうなるか?をシミュレーションできるアプリです。個人的に個人事業立ち上げについて色々アドバイスを頂いてお世話になっているクラーベルさん向け。

https://itunes.apple.com/jp/app/bini-huiwo-kuraberu/id901931669?mt=8&ign-mpt=uo%3D4


まだまだObjective-Cの勉強中なので、習作といった感じなのですが、自分の備忘録として記録しておくと今回このアプリで習得した技術は以下。

1) UIImagePickerContorollerによるカメラ、写真フォルダーの表示
2) 画像サイズの調整 (カメラで撮った画像は大きすぎる)
3) 複数Viewを貼ったときの、各Viewの管理と制御 (NSMutableArrayに保存)
4) Toolbarによる画面切り替え
5) Toolbarのアイコンのカスタマイズ
6) 縦/横の切り替え(これが一番苦労した)
7) 画像合成、保存
8) Scrollbarによる画像拡大、縮小
9) ブラウザ表示
10) collectionViewの使い方
11) textデータの保存、読み出し
12) AutoLayoutとか、そうじゃないときとか

特に3)については、今回画面上に複数の額絵を貼り付けられるようにしたため、ScrollViewで拡大されたときに全部一度に拡大しないといけない、とか、どれか一つを削除したいとか、そのあたり工夫しました。

具体的には、SubViewを増やす際、以下の様にNSMutableArrayにどんどんViewの情報を保存しています。

NSMutableArray *selectedPictureList;

//インスタンス作成
UIImageView *pictureView = [[UIImageView alloc] init];
pictureView = [[UIImageView alloc]initWithFrame:rect];
pictureView.image = image;
pictureView.contentMode = UIViewContentModeScaleAspectFit;
pictureView.tag = button.tag;
[_wallView addSubview:pictureView];
float x = pictureView.center.x;
float y = pictureView.center.y;
//Listに記録
[selectedPictureList addObject:@[@(button.tag), pictureView,@(x),@(y),@(width),@(height)]];

どのViewが選ばれたかというのは、eventが発生したときにsenderやgestureRecognizeにviewが入っていますので、それと比較してselectedPicutreListのpictureViewとどれかと一致しているかを検索します。こうしてpictuerViewを保存しておくと、UIImageViewはポインタ変数なので、selectedPicureList上でx,y,width,heightを変化させれば、実際のViewが変わるわけですね。

これによって、縦横の表示変更などに対応しています。

https://itunes.apple.com/jp/app/bini-huiwo-kuraberu/id901931669?mt=8&ign-mpt=uo%3D4