Hatena::Groupiphone-dev

Ni chicha, ni limona - 平均から抜けられない僕

2012-01-01

KatokichiSoftのiPhoneApp 00:16  KatokichiSoftのiPhoneApp - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  KatokichiSoftのiPhoneApp - Ni chicha, ni limona - 平均から抜けられない僕  KatokichiSoftのiPhoneApp - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

あなたの演奏を応援するために作りました。

Metronome PRO

黒歴史ソフトですが、初心忘れるべからずの気持ちで

Mosquito Attack


ちなみにふつうのはてなダイアリーでもブログを書いています。こちらですので、あわせてどうぞ。

NOAHNOAH2011/06/02 06:53沢山のiphone用メトロノームソフトを試して中で、
Metronome PRO (version 2.4)を使用しております。

さて、以下の二つの希望があります。

折角の美しいメトロノームのイラストなにの、
機能が増える毎に、文字も増えて、画面が汚くなります。
bookmark等の文字は無くても支障の無いものだと思いますが、
大きな文字で表示されています。
一旦設定が済めば、全ての文字等は消えてしまい、
メトロノームのイラストのみ表示し、
必要な時はワンタッチで表示できるする様に
なりませんか。

下記のリンクはコントラ・バス奏者のゲーリー・カー氏の
講演です。この中でめメトロノ-ムの使い方が述べられています。
一度お読みいただき、ソフト改良の参考にしていただけると
嬉しいです。

http://www003.upp.so-net.ne.jp/ultrabassissimo/contents/garylecture11.html

paellapaella2011/06/06 00:19NOAH様:
ご意見、そしてご愛用いただきありがとうございます。
コメントを頂いた当日に内容を拝見しておりましたが、返信が遅くなってしまい申し訳ありませんでした。

ご要望として以下の2つを承りました。
  1. 乱雑なUIが演奏の邪魔をしている(確かに込み入った状況に陥っていますね)
  2. bpmをもっと下げられる(リンク先では1が下限)
どちらも、とても参考になるご意見です。ありがとうございます。

うまくアプリに汲み取ろうと思いますので、どうぞしばらくお待ちいただけますでしょうか。
何とか形に出来るようにしてみます。

2011-09-28

[][] cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました 16:32  cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました - Ni chicha, ni limona - 平均から抜けられない僕  cocos2d入門書「cocos2d for iPhoneレッスンノート」を書きました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

拡張現実ライフの@akio0911さんとの共著で、cocos2dの入門-初心者向けの「cocos2d for iPhoneレッスンノート」 なる本を書きました。3つのゲーム作成を通じて、cocos2dの中身や扱い方が学べるようになっている本です。


cocos2d for iPhoneレッスンノート

cocos2d for iPhoneレッスンノート


cocos2dの本と言えば「cocos2dで作る iPhone&iPadゲームプログラミング*1が有名ですが、その中にない情報もいくつか載っています。


たとえば、書籍としてはあまり紹介されることのない高性能サウンドエンジン:CocosDenshionについて、基本の使い方からサウンドのフェードイン/フェードアウトエフェクトを簡単に扱う方法などを説明しています。また、使いこなせるとすごく役立つイージングアクションの丁寧な説明が載っているのもポイントです。Flashコンテンツによくあるような、物体の滑らかな移動を使いこなせるわけですね。


cocos2dは、iOS上で動く2Dゲームエンジンとしてはかなり強力なものであるにも関わらず、高速で使い勝手もよいフレームワークです(執筆している最中、何度もそのことを再認識しました)。世界中の開発者も使っているエンジンを使って、いっしょに楽しいアプリを作りませんか?


サンプルコードのダウンロードなど、サポートページはこちらです。


リンク

*1:こちらでも、監修としてほんの少しお手伝いさせてもらいました

FrenchyFrenchy2016/05/07 18:59Now I feel stdiup. That's cleared it up for me

JayveeJayvee2016/05/08 22:37“Our story begins with a blogger and this blogger is you! <a href="http://yqnfpnm.com">&#h8;12ahaha2a</a> that really made me laugh out loud for real. As did “H. SweetHam, Esq”I think you just wrote dooce fanfiction? and it was good??? amazing.

2011-02-10

[AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 01:15  [AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 - Ni chicha, ni limona - 平均から抜けられない僕  [AVFoundation][AVAssetWriterInput] AVCaptureVideoDataOutputを使って縦方向のムービーを撮る方法 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

ムービーを撮影しているときにデータをフレーム毎に処理したい場合、AVCaptureVideoDataOutputクラスを使用します。しかしこのクラス、他と違ってsupportsVideoOrientationプロパティに全てNOを返すようです(4.2で確認)。

for (AVCaptureConnection *connection in videoWriterOutput_.connections) {
    if (connection.supportsVideoOrientation) {
        // ここに入ってこない!
        connection.videoOrientation = orientation;
    }
}

ですので、そのままAVAssetWriter&AVAssetWriterInputでムービーファイルを作成すると、縦に持っていようが逆さまに持っていようが横向き(ホームボタンが右)のムービーが出来上がってしまいます。そんな見にくいムービーは要りません。


これを解決するには、AVAssetWriterInputクラスのtransformプロパティを使います。縦方向のムービーにしたい場合のコードは以下のとおりです。

assetWriter_ = [[AVAssetWriter assetWriterWithURL:saveLocationURL
                     fileType:AVFileTypeQuickTimeMovie
                     error:&error] retain];

NSDictionary *outputSettings = NULL;
outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                     AVVideoCodecH264, AVVideoCodecKey,
                     [NSNumber numberWithInt:(int)frameSize.width], AVVideoWidthKey,
                     [NSNumber numberWithInt:(int)frameSize.height], AVVideoHeightKey,
                     nil ];
videoWriterInput_ = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
                     outputSettings:outputSettings] retain];
[videoWriterInput_ setExpectsMediaDataInRealTime:YES];

// 縦方向で録画するように変換行列を指定
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, frameSize.width/2, frameSize.height/2);
transform = CGAffineTransformRotate(transform, 90/180.0f*PI); // ここでorientationを指定
//transform = CGAffineTransformScale(transform, 1.0, -1.0); // ← 間違い。左右反転してしまいます
transform = CGAffineTransformScale(transform, 1.0, 1.0);
videoWriterInput_.transform = transform;
[assetWriter_ addInput:videoWriterInput_];

AVAssetWriter&AVAssetWriterInputの初期化処理も自分メモ気味に書いてありますが、メインはtransformプロパティのところです。


これで無事に縦方向で保存されます。

良かった良かった。

2011-02-08

[書籍] iOS4プログラミングブックの書評 12:35  [書籍] iOS4プログラミングブックの書評 - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [書籍] iOS4プログラミングブックの書評 - Ni chicha, ni limona - 平均から抜けられない僕  [書籍] iOS4プログラミングブックの書評 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

FastEverをはじめとしたステキなアプリを開発していて、札幌にて精力的な活動を続けていらっしゃる id:frnk さんが、書籍「iOS4プログラミングブック」の書評を書いてくれました


  らっこのじゆうちょう


元々は「この本を使って、またステキなアプリを作ってくださいね」という下心全開でお送りしたのですが、書評まで書いていただいて嬉しい限りです。

さらには文中にて、


アプリ開発本を書くということは、読んだアプリ作者のためだけでなく、

そのユーザーさん全てのメリットになることなんだなあ、と改めて思いました。


という、私たちが考えていたことを見透かすようなコメントまで書いてくれています。アプリ開発に対して何かをするということは、その先にいるユーザーに対してのおもてなしを提供することに他なりません。この本で開発者が楽をするのではなく、ユーザーが楽しめるにはということをずっと意識して書いていたのです。

さすがfrnkさん、ありがとうございます。


iOS4プログラミングブック

iOS4プログラミングブック

2011-01-10

[iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました 20:07  [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました - Ni chicha, ni limona - 平均から抜けられない僕  [iOS] 書籍「iOS 4 プログラミングブック」の執筆に参加しました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

今月から発売される書籍「iOS4プログラミングブック」に、共同執筆の一員として参加しました。


  

iOS4プログラミングブック

iOS4プログラミングブック


この本は、iOS4で新しく追加された機能をメインに「どんな機能か」「どう使ったら良いか」、そして「使うときに気をつけたい箇所は何か」を詳細に説明した本です。

目次

Amazonでも確認出来ますが、本書は次のような構成になっています。

 第1章 高解像度ディスプレイ

  1-1 高解像度ディスプレイの概要

  1-2 高解像度ディスプレイのリソース

  1-3 Core Graphcisの高解像度ディスプレイ対応

  1-4 UIKitの高解像度ディスプレイ対応

  1-5 Core Animationの高解像度ディスプレイ対応

  1-6 OpenGL ESの高解像度ディスプレイ対応

 第2章 マルチタスキング

  2-1 マルチタスキング

  2-2 マルチタスキングのキーワード

  2-3 目的別のマルチタスキング適用方法

  2-4 マルチタスキングのまとめ

 第3章 マルチメディア

  3-1 AV Foundation概要

  3-2 カメラ制御

  3-3 ビデオの編集とエクスポート

 第4章 アセットを使ったフォト/ビデオへのアクセス

  4-1 Assets Libraryとは

  4-2 クラス構造

  4-3 基本的な使い方

  4-4 Assets Libraryを使用する時の注意点

 第5章 マルチスレッド

  5-1 Blocksの概要

  5-2 Blocks解説

  5-3 Grand Central Dispatchの概要

  5-4 Grand Central Dispatchの解説

 第6章 ローカル通知

  6-1 ローカル通知の概要

  6-2 Local Notificationの実装

  6-3 Local Notificationの応用

 第7章 イベントキット

  7-1 Event Kitの概要

  7-2 Event Kitの実装

 第8章 広告エンジン

  8-1 iAdとは

  8-2 iAdのiTCの登録

  8-3 iAdの実装方法

  8-4 iAdと他の広告との比較

  8-5 iAdと他の広告の実装方法

 第9章 ジャイロセンサー

  9-1 ジャイロセンサーの概要

  9-2 ジャイロセンサーの実装方法

 第10章 ユニバーサル対応

  10-1 ユニバーサルアプリケーション

  10-2 デバイス識別方法

  10-3 古いiOSバージョンへの対応

 第11章 misc.

  11-1 ドキュメントプレビュー

  11-2 リソースファイル

  11-3 データ保護

私が担当した箇所と、どういう内容を書いたか

上の目次のうち、私が担当したのは

  • 2章のマルチタスキングについて
  • 4章のAssets Libraryフレームワークについて
  • 8章のiAd(これはサポートだけですが)

の3つです。


マルチタスキングでは標準的な説明だけでなく、アプリケーションの振る舞いがどうなっているのかを丁寧に説明することに注力しました。自分がマルチタスキングをサポートするアプリを作りたい場合に、どういう作法に従うべきかを解説しています。


Assets Libraryフレームワークでは、とかくマイナーな存在であるこのフレームワークについて、基本を丁寧に解説することに注力しました。ユーザーのiOSデバイスに保存されている、ユーザーにとっての貴重なデータを活用出来るという夢広がるフレームワークです。これまでに発売されている洋書でもほとんど解説されていない箇所ですので、貴重な資料になっています。


iAdでは、自分のアプリにiAdを組み込むにはどうしたらよいか、という点を丁寧に解説するよう心がけました。iAdはAppleの示す作法にしたがった実装が行われていないと審査でRejectされてしまいます。作法自体は簡単なものですが、それらを分かりやすくまとめています。


それ以外にも、超強力な執筆陣によるとても役立つ内容が揃っています。Mac OS Xアプリ作成にも役立つ(←重要!)BlocksやGCD、iOS4で格段に機能拡張されたAVFoundationをはじめ、「iOS4の機能を使いつつiOS3デバイスもサポートしたい」「iOS4でカメラ周りのAPIが変わったけどどうしたらいい?」「OpenGLをRetina液晶で使うベストプラクティスを知りたい」といった要望にも応える内容が満載です。

他の執筆者の紹介記事

最後に、他の執筆者の皆様が本書に言及されている記事を紹介します。それぞれがどのような内容になっているかを窺い知ることができますので、ぜひご覧ください。

氏は書籍「そのまま使える iPhoneアプリプログラム」の著者でもあります。

splhack氏はBlocksについての補遺(ほい)をブログ上で掲載しています。非常に濃い、良い内容ですのでぜひご覧ください。

後者のエントリは、「不安なので買う前にもっと情報を」という方にオススメの情報が書かれています。

また、南東京iPhone開発者勉強会を精力的に主催していらっしゃる@cqa02303氏も、得意のカメラアプリについての情報を惜しみなく記しています。


2011/2/3追記

発売してからもAmazonで1位を獲得したりと、好評を頂いていて何よりです。皆様本当にありがとうございます。

執筆者のブログも更新されていますので、現況に合わせてリンク一覧を纏め直しておきました。

LennaLenna2011/05/14 14:20HHIS I soluhd have thought of that!

xpnqknfeqxpnqknfeq2011/05/14 21:38ow9RUR <a href="http://audjfbjvqlik.com/">audjfbjvqlik</a>

profgpvcsprofgpvcs2011/05/15 22:31RZRTQO , [url=http://fohadljpdglm.com/]fohadljpdglm[/url], [link=http://qjhmeuhwvxhm.com/]qjhmeuhwvxhm[/link], http://wltidlzitxgh.com/

profgpvcsprofgpvcs2011/05/15 22:31RZRTQO , [url=http://fohadljpdglm.com/]fohadljpdglm[/url], [link=http://qjhmeuhwvxhm.com/]qjhmeuhwvxhm[/link], http://wltidlzitxgh.com/

hughorsnxhughorsnx2011/05/17 13:15mkRrBH <a href="http://osiwpxcljgkm.com/">osiwpxcljgkm</a>

pcwyjrxtfxpcwyjrxtfx2011/05/29 22:18D1omG0 , [url=http://nmpplywgacfu.com/]nmpplywgacfu[/url], [link=http://cxrclqyxdggb.com/]cxrclqyxdggb[/link], http://axqgeyrpktnh.com/

2011-01-09

[AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 11:32  [AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 - Ni chicha, ni limona - 平均から抜けられない僕  [AssetsLibrary] Assets Libraryフレームワークを使うときの注意点 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

Assets Libraryフレームワークは、ご存じのとおりフォトライブラリの中の全メディアにプログラムからアクセス出来るようになる素敵なフレームワークです。

これを使えば、たとえば

  • 複数の画像を一度に選択できるイメージピッカー(そしてFlickrに一括転送、とか)
  • 画像管理アプリ
  • 好きなあの子の写真だけを表示出来るスライドショーアプリ
  • 撮影した写真のExif情報を取得
  • ライブラリ内の画像にExif情報を付けて別名保存(上書きは不可)

みたいなことができるわけです。今さらかもしれませんが、本当に便利なフレームワークなのです。なのですよね!


さて、このフレームワークを使っているとき*1に1つ気づいた点がありますので、記しておきます。


注意点:「ALAssetsGroupのposterImageメソッドは、大元のALAssetsLibraryオブジェクトが解放されていると、nilを返すことがある」


これはどういうことかと言いますと、ALAssetsLibraryから取り出したALAssetsGroupで得られるグループの代表画像(=posterImageメソッドで得られるサムネイル画像)は、ALAssetsLibraryが解放されていると、正常な画像が得られないことがあるということです。確認し切れていませんが、さらに先のALAssetを取得する段階でも問題が発生する可能性があります。


// マズいコード
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
				    usingBlock:resultBlock
				  failureBlock: errorBlock];
[library release]; // これだと以降のグループに対する処理がおかしくなってしまう!

上記のようにグループ取得後にリリースした場合、それ以降にALAssetsGroupオブジェクトに対して行う処理が失敗してしまうようになります。確認した範囲では、ときどき失敗したりと、不安定になっていました。

ですので、上記のALAssetsLibraryオブジェクトはクラスのメンバー変数にしておくことが必要になります。


// OKなコード
// --- @interface部 ---
ALAssetsLibrary *library_; // メンバー変数で持たせる

// --- @implementation部 ---
library_ = [[ALAssetsLibrary alloc] init]; // そして保持したままにする!
[library_ enumerateGroupsWithTypes:ALAssetsGroupAll
				     usingBlock:resultBlock
				   failureBlock: errorBlock];

お気を付けください。


Assets Libraryフレームワークに関する資料は、現在だと世界中を見渡しても非常に少なく、クラスリファレンスとにらめっこして、動作のトライ&エラーを繰り返して開発しなければいけません。

しかし、今月発売される「iOS4プログラミングブック」にはこのAssets Libraryフレームワークについての解説が載っています。フォトライブラリに溜まる写真を活用したい方は、ぜひ手にとってご確認くださいませ。


  

iOS4プログラミングブック

iOS4プログラミングブック


*1:iOS SDK4.2.1で確認しました。

msrdzebirwmsrdzebirw2013/12/18 05:27sucemjqipof.efw, <a href="http://www.tvwaunanwi.com/">auhexwbpnz</a> , [url=http://www.fssvrrtnmw.com/]niirjwuska[/url], http://www.rgwvzwlfds.com/ auhexwbpnz

2010-12-31

[NSLog] 今さら聞けないNSLogの話 09:04  [NSLog] 今さら聞けないNSLogの話 - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [NSLog] 今さら聞けないNSLogの話 - Ni chicha, ni limona - 平均から抜けられない僕  [NSLog] 今さら聞けないNSLogの話 - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

今更で本当に恥ずかしいことですが、自戒も込めて記事にしておきます。


NSLogで出力される中で[aaa:bbb]とある部分、これは[プロセスID:スレッドID]を表しています。プロセスIDである点は、NSLogvのマニュアル部分に載っているのですが、では右の値はどこから得ているのでしょう?

実際にGDBで確認してみましょう。実行中のスレッド情報をinfoコマンドで出力してみます。

(gdb) s
2010-12-31 08:01:14.096 MetronomePro[1183:207] hoge

(gdb) info thread
Thread 1 has current state "WAITING"
	Mach port #0x207 (gdb port #0x1403) ← ここ!
-[KSPopoverViewController loadView] (self=0x8e558b0, _cmd=0x7414aa) at /Users/〜/KSPopoverViewController.m:48
	frame 0: 	pthread ID: 0xa0b95540
	system-wide unique thread id: 0x6ce4
	dispatch queue name: "com.apple.main-thread"
	dispatch queue flags: 0x0
	total user time: 120858000
	total system time: 103652000
	scaled cpu usage percentage: 0
	scheduling policy in effect: 0x1
	run state: 0x3 (WAITING)
	flags: 0x0
	number of seconds that thread has slept: 0
	current priority: 47
	max priority: 63
	suspend count: 0.
(gdb)

gdbの出力から、右の番号がMah portのスレッドIDを表していることが分かりますね。ちなみにMach portについての説明は以下サイトで紹介されているPDFを読むと良いでしょう(とても良い内容です)。


  no title


いやあ、今まできちんと理解せずに使っていたので、何ともお恥ずかしい話です・・・。


■(応用編その1)凝ったNSLogにしたい

それだけだと恥さらしするだけで終わりですので、私が使っているNSLog代替のマクロを紹介しておきます。

#define KSLog(fmt, ...) \
	NSLog((@"<%s/%d> " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

これはNSLogと同じように使え、さらに

  • 現在の関数(見やすいフォーマット)
  • 呼んだ行数

も同時に表示してくれる便利なマクロです。


■(応用編その2)NSLogを自前のログ出力関数とすげ替える方法

もう1つ、NSLogを自前の関数にすげ替えるテクニックを紹介します。まずはプリプロセッサを使う方法です。

// プリプロセッサで強制的に書き換えてしまう
#define NSLog(...) MyLog(__VA_ARGS__)

// 自前のログ出力
void MyLog(NSString *fmt, ...) {
    va_list ap;
    va_start (ap, fmt);

#if 1 // NSLogvを使用する方法
	NSLogv(fmt, ap);

#else // fprintfで出力する方法
    // NSLogと同様に、末尾の改行を入れ込む
    if (![fmt hasSuffix: @"\n"]) {
		fmt = [fmt stringByAppendingString: @"\n"];
	}
    NSString *body = [[NSString alloc] initWithFormat:fmt arguments:ap];
    fprintf(stderr, "MyLog:%s", [body UTF8String]);
    [body release];

#endif

	va_end(ap);
}

void MyUncaughtExceptionHandler(NSException *e) {
    MyLog(@"E:%@", [e reason]);
}

- (id)init {
    // 例外発生時に呼ばれる関数を設定
    NSSetUncaughtExceptionHandler(&MyUncaughtExceptionHandler);
        :
}

いやはや、defineマクロって恐ろしいですね。


そして、さらに荒々しい方法として、AppleのWebObjectsの記事で紹介されているこの方法によって、NSLogをSwizzlingしてしまう方法も紹介します。

// 準備
extern void _NSSetLogCStringFunction(void(*)(const char *, unsigned, BOOL));
static void _MyLogCString(const char *message, unsigned length, BOOL withSyslogBanner) {
   fprintf(stderr, "%s(%d[%s])\n", message, length, withSyslogBanner?"T":"F");
}

- (id)init {
    // NSLogをすげ替え(プライベートAPI!)
    _NSSetLogCStringFunction(_MyLogCString);
        :
}

これをランループを開始する前に呼んでしまえば、ことごとく差し替えられてしまうという、前述のプリプロセッサを使った方法よりも恐ろしい方法です。

ただ、この_NSSetLogCStringFunction()関数は、ほどのドキュメントにもあるとおりプライベートAPIですので、審査には確実に通りません(試してないですが)。


用法を守って、正しくお使いくださいませ。

StormStorm2016/05/07 18:39Thank you so much for this artlcie, it saved me time!

ElouiseElouise2016/05/09 04:00alice · giovedì, 13 dicembre 2012, 5:14 pmMaroni: Se prendiamo la Lombardia saremo in grado di condizionare qualunque governoTUTTI A VOTARE PER LE PRIMARIE DELLA LOMBARDIA SABATO 15FACCIAMO VEDERE ALLA LEGA I SORCI VEACDFRICIAMO VEDERE I SORCI VERDI ALLA SANITA’ DI COMUNIONE E LIBERAZIONE. SANITA’ L A I C A http://xydbpz.com [url=http://trcqddc.com]trcqddc[/url] [link=http://cnxkuwfs.com]cnxkuwfs[/link]

2010-12-25

[UI] プルダウン型のUIを作りました 16:42  [UI] プルダウン型のUIを作りました - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [UI] プルダウン型のUIを作りました - Ni chicha, ni limona - 平均から抜けられない僕  [UI] プルダウン型のUIを作りました - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

ボタンにタッチするとメニューがスルスルッと出てきて、フリックしたらイベントが発生するユーザーインタフェースがほしいなと思ったので、そういうビューコントローラを作ってみました。


  GitHub - hirohitokato/KSPopoverView: A pulldown menu UI for iOS


以下、自分の備忘録も兼ねた使い方です。

使い方

1. ビューコントローラKSPopoverViewControllerを作成します。作成する際、メニューを引き出すきっかけになるボタンの画像と、配置位置(左上)を指定します。

UIImage *image = [UIImage imageNamed:@"katokichi"];
_menu = [[KSPopoverViewController alloc] initWithImage:image
	 point:CGPointMake(50.0f, 340.0f)];

2. メニューで表示するボタンを追加します。ボタンは文字列で指定します(KSPopoverViewButtonBaseのサブクラスを自分で作成すれば、文字列でないボタンも作成できます)。あとはデリゲートオブジェクトを指定してビューに突っ込むだけです。

[_menu addButtonWithTitle:@"アイテム 1"];
[_menu addButtonWithTitle:@"アイテム 2"];
[_menu addButtonWithTitle:@"アイテム 3"];
[_menu addButtonWithTitle:@"アイテム 4"];
[_menu addButtonWithTitle:@"アイテム 5"];
[_menu addButtonWithTitle:@"アイテム 6"];
_menu.delegate = self;
[self.view addSubview:_menu.view];

3. UIで要素が選択されると、イベントを受信するデリゲートメソッドがインデックス番号とアイテムのオブジェクトと共に呼ばれます。

- (void)popoverViewController:(KSPopoverViewController *)controller
			   selectedButton:(KSPopoverViewButtonBase *)button
					  AtIndex:(NSInteger)buttonIndex {
	button.text = [NSString stringWithFormat:@"pressed %d", buttonIndex];
}

ここで処理を行います。


アドホックなところも多くあるので、何かあればコメントをもらえると嬉しいです。

nihitonihito2011/06/18 09:50DLさせていただきました。
二文字のアルファベットを先頭につけたクラスをみて律儀だなぁと感心しました。(←見るべきところが違っててすいませんw)

dandan2011/12/15 01:10非常にに参考になりました。活用させてください。

2010-12-21

[AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド 09:13  [AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド - Ni chicha, ni limona - 平均から抜けられない僕  [AssetsLibrary][yidev] 横浜iPhone勉強会(yidev)の発表スライド - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

去る12月11日に行われた、横浜iPhone勉強会(yidev)でAssets Libraryについて発表してきました。


Assets Libraryとは、フォトライブラリの写真にプログラムからアクセスするとても、とっても便利な方法です。

イメージピッカーのようなUIを自分で作れるようになりますので、「複数の写真を選択して、一度にflickrに投稿する」というような、イメージピッカーでほしい機能を自由に作り込むことができる優れもののライブラリです。

とくにiOS4.1以降では写真に対してExif情報などのメタデータを保存するAPIも本フレームワークで提供するようになりましたので、カメラアプリを考える上では必須のフレームワークと言えるのではないでしょうか。


というわけで、そのときの発表スライドをここに置いておきます。ぜひ、Assets Libraryを活用したアプリを作ってみてくださいまし。

2010-12-02

[Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする 21:33  [Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする - Ni chicha, ni limona - 平均から抜けられない僕 を含むブックマーク はてなブックマーク -  [Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする - Ni chicha, ni limona - 平均から抜けられない僕  [Photos][Tips] iPhoneシミュレータで実機上のフォトライブラリにアクセスする - Ni chicha, ni limona - 平均から抜けられない僕 のブックマークコメント

iPhoneシミュレータを使っていて不便なのが、フォトライブラリに画像がほとんど登録されていなくて、なおかつ大量の画像データを一度に登録する方法がない点です。

iPhone シミュレータ 画像」とググっても、上記サイトのように「MobileSafariで画像表示→画像を長押し→登録」×n回、という方法が出てくるのみです。ちょっと(というかかなり)面倒です。


何かいい方法はないかなあと調べていたら「Phone Disk」というアプリを使ったナイスな方法が分かったので、本記事で紹介します。

このアプリは、MacFUSEを使ってiPhoneデバイスをファイルシステム上にマウントしてくれるアプリです。FinderでMediaディレクトリ上に直接アクセスできるようになって色々できる便利なアプリ。マウントしてくれるので、ターミナルからでも/Volumesディレクトリ経由でアクセスできるのもGood。

そこで、iPhoneデバイスをマウントしている状態で同ディレクトリにシンボリックリンクを貼ると、シミュレータでも実機で写真アプリを開いたときと同じ内容が表示されるようになります。

% cd ~/Library/Application Support/iPhone Simulator/4.2
% mv Media Media_orig # 既存フォルダを退避しておく
% ln -s /Volumes/<デバイスに付けた名前>\ \(Media\) Media

上記のコマンドを実行しておけば、実機接続時に同じように写真を表示してくれます。AssetsLibraryで独自イメージピッカーなんかを作っているときなど、すごく便利ですね。


Phone Diskは$19.95(4ライセンスだと$35.95)の有料アプリですが、買っておいて損はないんじゃないかと思います。Safariで延々とファイルを保存していく時間ぶんのコストを考えると、なおさら。

迷っている方も15日間無料で使えますので、まずは試してみてはいかがでしょうか。


以上、開発上のTipsでした。

PunkPunk2012/02/07 08:17Holy shinzit, this is so cool thank you.

pazjciufpazjciuf2012/02/07 18:30IgUs4a <a href="http://grpttulfnqna.com/">grpttulfnqna</a>

ffqyjfvfffqyjfvf2012/02/09 20:55Qe7IgZ , [url=http://lvjsyrvrncac.com/]lvjsyrvrncac[/url], [link=http://ewzbyhrhbcnx.com/]ewzbyhrhbcnx[/link], http://ppclzpjslora.com/

qxrddtokiqxrddtoki2012/02/11 01:525m4rMV <a href="http://gofencxgkbey.com/">gofencxgkbey</a>

bqupoxbqupox2012/02/12 04:2977Ee87 , [url=http://tznbiqnyxzzn.com/]tznbiqnyxzzn[/url], [link=http://sxmctdooptxj.com/]sxmctdooptxj[/link], http://vfibnkhdemnc.com/