2012年3月30日金曜日

iphoneアプリの実装した事と問題のまとめ


●StoryBoardの構成
UIView

UIScrollView

UIImage


●実装した内容
・ScrollViewメソッドをデリゲート
→デリゲートメソッドを使いピンチイン・ピンチアウトで画面の縮小拡大
→スワイプで画像表示位置の移動

・UIScrollViewを継承したコントローラーの作成
→タップ時にイベントをViewに透過する。

・UIViewでタップでナビゲーションバーのオンオフ
ダブルタップで画像の拡大・縮小
スワイプで画像を変更

●問題
ピンチイン・ピンチアウトをするとスワイプで
拡大中のイメージをスライドできるが、
タップすると、UIViewの動作しかできなくなる。
ピンチイン・ピンチアウトするとスワイプで画像の移動が
できるようになる。


またダブルタップした時拡大だが中心のみだったので
下記ブログを参考に押された所がスクロールするように変更する。
またこちらのブログだとピンチイン・ピンチアウトはUIViewでデリゲートメソッド呼び出しでなく
継承したクラス内で定義している。
http://cocoadays.blogspot.jp/2010/09/3.html

2012年3月29日木曜日

iphone開発メモ

初期で用意されている、UIViewコントローラーと 追加で作成したUIViewコントーラーって物が違う。 同じ項目だと思って使用してたらUIImageで表示できなかったりと色々悩んでしまった

iphoneアプリ開発メモ5

storyboardを使ってiphoneのアプリ開発を始めた所、 コード上でUIimageViewを作って UIViewの中に入れる事が出来るとかは後になって分かったけど storyboard上で UIView ↓ UIScrollView ↓ UIImageView と重ねるのと UIView ↓ UIScrollView だけstoryboardで設置して コードでUIImageViewを追加するのはどっちがいいのだろう・・・ コードをできるだけ短く書くと言うのであれば、storyboardでできるだけ設置したほうがいいのかも。

2012年3月28日水曜日

iphoneアプリ開発メモ4

ViewContollwer上でタップイベントを取得し、
タップでNavigateionBarの表示・非表示を切り替える処理を実装した所。

今度は、ナビゲーションバーのボタンを押しても反応しなくなった。
storyboard上で画面遷移の設定をしているはずなのだが、
上記タップイベントを書いた事で反応しなくなった様子。
画面のタップとナビゲーションバーのタップの識別が必要だと思うので
探していたところ。

IBAction内でsenderを識別する方法
http://d.hatena.ne.jp/tasanobu/20100504

を参照にすると、sender.tagを記述して、
おされた項目のsender.tagによってどこが押されたか判別できるらしい。
これによって処理の分岐ができそう。

こうなってくると、画面遷移はロジックで実装する必要がありそう
storyboardを使っていて、ロジック上で画面遷移をする場合は
下記コードでできるみたい。

http://d.hatena.ne.jp/SOMTD/20120123/1327763634
より

TempViewController *tempVC;
tempVC = [self.storyboard instantiateViewControllerWithIdentifier:@"TempViewController"];
//モーダルの表示
[self presentModalViewController:tempVC animated:YES];
さらにstoryboardでIdentifierに設定する必要があるみたい。

iphoneアプリ開発メモ(デリゲートとは?)

iphoneアプリ開発でデリゲートと言う言葉が頻繁に出てくる。

例として
イベントをメインのビューで受け取ってScrollViewで処理する場合。
ScrollViewクラスをデリゲートすると
ScrollViewクラスで通常処理してもらい、
必要な部分だけはこっちで書きますよって処理ぽい。

そこで必要な部分だけはこっちで書きますよって言うのが
deletegeメソッドと言う部分ぽい。

iphoneアプリ開発メモ3

写真集アプリを作る場合バーを半透明にしたいので調べていたところ
下記コードでできるみたい。

// ナビゲーションバーを半透明に(selfはUIViewController)
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.translucent = YES;

// ツールバーを半透明に(selfはUIViewController)
self.navigationController.toolbar.barStyle = UIBarStyleBlack;
self.navigationController.toolbar.translucent = YES;

// ちなみにステータスバーは、これまでどおりでOK
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent

情報元は下記ブログ
http://iphone-dev.g.hatena.ne.jp/tokorom/20090822/1250919617

2012年3月27日火曜日

iphoneアプリ開発メモ2

タップのイベントを取る時に、View上でイベントを取る場合は
ロード時にイベントと関数を結びつける設定をしていたが、

scrollview上で
下記関数をオーバーライドしても実装できる。
・タッチ開始
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

・タッチ終了
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

・タッチしてスライド
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

・タッチが中断した場合
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

※オーバーライドしたcustomImageVeiwクラスを作成する。
 作成したあと、customImageViewを使うようにクラスを差し替える。

下記ブログが参考になるので参照
http://d.hatena.ne.jp/touka_tt/20110404/1301893982

http://cocoadays.blogspot.jp/2010/09/3.html

デリゲートに関する記事
http://ai-lab.biz/blog/development/entry-341.html

今日やる事。
scrollview上でシングルタップと、ダブルタップのイベントを取る。

2012年3月26日月曜日

iphoneアプリ開発メモ1

・勘違いしていた事
storyboardでイベントを取ってview内に実装していくと思っていたが、
storyboardは画面遷移のみを記述するので違った
例えば、タップイベントをstoryboard上でドロップして、そこから結び付けて行くと思って
いたが、そうではなくloadイベントで設定する。

//どのタップを取るのかの設定(指二本とか一回タップとか設定できる。)
UITapGestureRecognizer *oneTapOneFinger = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(実行する関数:)];

//タップイベントとViewを結びつける。
[myView addGestureRecognizer:oneTapOneFinger ];


・画像の拡大/縮小→scrollviewをdelegeteして実装