iPhone5/iOS6になってのTips
■viewDidunLoadは呼ばれない
これけっこう気をつけること。
NotificationとかObserverとか、
removeしてあげないといつまでも通知してくれる健気な彼ら。
プログラムに旋風を巻き起こすことになります。
結果、
「なんでこのメソッド2回も呼ばれるんだ..!」とか、
「呼ばれる回数がどんどん増えている..!怪現象か..!」とか、
そんなことになるので、
viewWillDisappearでremoveしてあげること。
ということはセットするのはviewWillAppearとかが良いですね。
■iPhone5でのimageNamedでの画像指定
用意する画像は3つ。
・abc.png
・abc@2x.png
・abc-568h@2x.png
iPhone4SのRetina Displayでは
UIImage* image = [UIImage imageNamed:@"abc.png"];
と書けば呼び出してくれる。
でiPhone5ではっていうと、
UIImage* image = [UIImage imageNamed:@"abc-568h.png"];
とすれば良いです。
この場合に、abc-568h.pngとかっていう画像は不要です。
3種類あればok。
(ただし568-h@2xサイズを用意してね)
それはなぜかっていうと、画像ファイルのほうに@2xとついていると、
自動的に「Retinaサイズだ!」と認識してくれるから。
かつ、568hの画像(=iPhone5)は必ずRetina Displayなので、
1/2サイズは用意しなくていい。
if (IPHONE5) {
image = [UIImage imageNamed:@"abc-568h.png"];
} else {
image = [UIImage imageNamed:@"abc.png"];
}
みたいな感じ!
ちなみにIPHONE5てのはマクロ定義してます。こんな感じ。
#define IPHONE5 ([UIScreen mainScreen].bounds.size.height == 568)
むしろもう3Gとか対応するのいいんでは..orz って思ってしまうけど
まだ若干ユーザーいるみたいね。