2011年11月25日金曜日

画像をPhotoLibralyに保存する


さて、前回作った画面キャプチャのUIImageって何に使うんだ?と思った人は多いでしょうね。
まあ、使い道としてはカメラやフォトライブラリから取得した写真をごにょごにょして、それをまた保存するなりメールで送りたいって感じでしょうかね。

コールバック関数の部分は別に nil にしてもらっても良いと思います。

-(void)saveToPhotoLibrary{

 UIImage* img = [self screenCapture];//前回の記事を呼んでちょ 
 NSData *pngData = UIImagePNGRepresentation(img);
 UIImage *screenImage = [[UIImage imageWithData:pngData] retain];
 
//コールバック関数の設定  
    SEL sel = @selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:);
    UIImageWriteToSavedPhotosAlbum(screenImage, self, sel, nil);//ここのselが保存後に呼ばれる。

}



//コールバック関数

- (void)savingImageIsFinished:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void *)contextInfo{
   
    NSString* message;
    if(!error){
        message = @"success save";
    }else{
        message = @"fail save";
    }
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"保存" message:message
                              delegate:self
                              cancelButtonTitle:nil
                              otherButtonTitles:@"OK",nil];
    [alertView show];
    [alertView release];
}


2011年11月24日木曜日

お世話になった書籍たち

デベロッパー登録してはや一年半。
思えば、まったくアプリが売れてねぇ...



書籍だって何冊買ったかわからん位買ってるので、もうけるどころか大赤字です。
 まあ、今は本業でiOSやってるので就職活動代とみるか。。。

 始めたばかりの頃は、サンプルのコードを書き写してビルドするのが精一杯だったのですが、一体僕はどうやって開発できるようになったのだろう?
そんなことを考えてみました。
※そんなこと考える暇があったら設計書の一つでも書けと言われそうですが。。。





やっぱり大金をつぎ込んできた書籍達のおかげでしょうか。今日はその中でも厳選してご紹介致します。





interfaceBuilderを使わないというポリシーの本。
この本にどれだけ助けられたか。
そもそもInterfaceBuilderはわかりやすいけれど、ちゃんと使いこなすにはやっぱりコードが書けないとです。この本で学んでから、再びIBに戻ると新しい世界が開けます。
中級者くらいでも、ど忘れしたときに開くと便利かも。



MVCの何たるかが分かりやすく書いてあります。
この本の手法で、スマートで仕様変更にも耐えられるアプリが作りやすくなります。
アプリは作ったことあるけれど、デバッグしてるとよくBad Access食らってアプリが落ちるなんてひとにもおすすめかも。
中級者向け。



OpenGL ES1なのでちょっと古い感じになりましたが、この本にもすごく助けられた。OpenGLなんかやってられるかと思っていたけど、この本のおかげでなんとかなることが分かりました。
この本をやりつつ、OpenGL ESのクラスリファレンスを読むとより理解度が高くなるかもしれません。





目からウロコな一冊。パフォーマンスに関する部分は読まずに死ねるかという感じ。




これは枕にするにはちょうどいい本。はじめは呪文に見えましたw
iOSに関係ないガーベジコレクションについても書かれています。上を目指すには必読。




この本から、未だにかゆいところに手が届くネタを見つけることがあります。お気に入りの一冊。



iOS4の新機能に特化した書籍。カメラ周りやblocksについてなど内容は盛りだくさん。読んで納得の一冊。




唯一のCoreAudioの本。音系のアプリを作るなら必携の一冊。



真剣に読むというよりは、持っておくと便利な本。
 



この本のサンプルは作ってて楽しかった♪
UIKitを一通り触ってもうちょっと何かって人にお勧めです。




僕が初めて買った本。
書いてある通りに作ればサンプルは作れます。だけど、肝心のところが理解できないかも。
これと併用してObjective-Cの文法の本を買うと良いと思います。

cocos 2d関連


敷居の高そうなcocos2Dを自分の土俵に引きづり込めた一冊。おすすめ




上のやつを読んでからこの本を読むとよさそう。



開発以外



いろいろとアプリの企画からプロモーションまで為になることが書いてある。

画面をキャプチャする


久しぶりの投稿ですみませんm(_ _)m

最近 CoreGraphicsにハマってます。(以下 コアグラ)
いやーいろいろできて便利です♪

もう既にコアグラしてるぜっ!って人は突っ込みどころ満載かもしれないので手加減してくださいね。

まずは、画面に映ったものをUIImageに
しちゃいましょうか。

こんな感じ。


- (UIImage *)screenCapture {
   
    UIImage *capture;
    CGRect rect = self.view.frame;
   
    UIGraphicsBeginImageContext(rect.size);//コンテキストを作る。
    [[UIApplication sharedApplication].keyWindow.layer renderInContext:UIGraphicsGetCurrentContext()];//スクリーンからキャプチャしてコンテキストにレンダリング
    capture = UIGraphicsGetImageFromCurrentImageContext();
    

 UIGraphicsEndImageContext();//コンテキストを閉じる。
   
    return capture;



コアグラでイメージ作るのは、大抵そうなんだけど
メモリ上の空間(コンテキスト)に描画して (ここでは画面に結果が出力されない)
そいつを 
capture = UIGraphicsGetImageFromCurrentImageContext(); 

 でUIImageとして取り出す方法が基本w 




上の例では、ナビゲーションバーとかも画面に映ったものは問答無用でUIImageにしてるけれど
[app.view.layer renderInContext:UIGraphicsGetCurrentContext()];
とかに変更すると、Viewで狙いうつこともできます。

リリース前のplistとかプロジェクト周りの設定について

 あー、完全に自分の為のメモです

アイコン
iPad用とRatina ディスプレイ用にアイコンファイルを設定する。
用意するファイル
Icon.png = 57×57
Icon@2x.png = 114 × 114 (iPhone4用)
Icon-72.png = 72 × 72 (iPad2用)

plist設定
Icon file を空欄にする
行を追加してIcon filesを選ぶ。Item 0 Item1と追加して、項目にアイコンのファイル名を入れていく。
これにより、デバイスによって最適な画像のサイズを選んでアイコンを表示してくれるようになる。

必要であれば、検索で表示されるときの小アイコンも設定する。

Icon-Small.png 29 × 29 (iPhone3GS用小アイコン)
Icon-Small-50.png 50 × 50 (iPad用小アイコン)
Icon-Small-@2x.png 58 × 58(iPhone4用小アイコン)



<メモ>
iPad対応にする手順
http://blog.myrss.jp/archives/2010/04/iphone_ipad.html