Autolayoutは使わず、Autosizingで既存の3.5inchアプリを4inch対応する時のメモ
-
Default-568h@2x.pngの画像を入れると4inch対応済と認識される
簡単なUIの場合、ほとんどAutosizingで対応できる。 -
アプリの MainWindow.xib → Windowを選択 → Attributes Inspector → Windowの『Full Screen at Launch』にチェックを入れる。(Xcodeのバージョンによっては必要ない??)
-
広告などの下部に表示するUIView対応
Xcodeの右のViewを表示→右から2番目の定規のようなタブを選択→Autosizingで位置を下から指定にする
例) ソースで変更する場合
//iPhone5 4inch 縦長対応 左下隅に固定
uiview = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
//iPhone5 4inch 縦長対応 ソース上でピクセル固定で移動させることがある場合
CGRect mainFrame = [[UIScreen mainScreen] bounds];
BOOL is568h = mainFrame.size.height == 568.0;
float offsetY = 0;
if (is568h) {
offsetY = 568.0 - 480.0;
}
CGRect frame = uiView.frame;
frame.origin.y = POS_Y + offsetY;
uiView.frame = frame;
- 背景を引き延ばす
背景画像を引き延ばす場合、Xcodeの右のViewを表示→右から2番目の定規のようなタブを選択→Autosizingの線を全て選択状態にする。
- 背景画像の引き延ばす領域を指定したい場合
capInsetsを使う。
例)
//iPhone5 4inch 縦長対応
UIImage *bgImage = [UIImage imageNamed:@"bg_image.png"];
bgImage = [bgImage resizableImageWithCapInsets:UIEdgeInsetsMake(113.0, 0, 430.5, 0)];
[bgImageView setImage:bgImage];
- 背景画面がドットやボーダーの場合
- 背景画像がドット柄などの場合、640x1136の画像のみ用意し、インターフェースビルダーでUIViewのModeを伸縮しないTopやAspect Fill等に変更する。
ソースで変更する場合はUIView.autoresizingMaskを使う
詳しくはここに書かれています
- アプリのiPhone5対応 - http://www.toyship.org/archives/916
- アプリをiPhone5に対応する場合の地雷ポイント一覧 - http://fladdict.net/blog/2012/09/jirai.html
※注意点
AutolayoutはiOS6で追加された機能の為、使うとiOS5では落ちてしまう。
インターフェースビルダーでAutolayoutをONにする場合、xibを開き
Xcodeの右のViewを表示させ左のタブのUse AutolayoutをONにする