.03 2012

iOS6…iOS6対応ねぇ…

はい、どうもUTOです。
ブログ当番を一週間すっぽかしていたようですが、なんのことやら

さて、先月iOS6が正式にリリースされ、
私達アプリ開発の人間視点ではだいぶヒーヒーいっております。

なぜならば、iOS5からiOS6にかけてUIな部分で対応が余技なくされるからです。


今の時点がわかっていることを列挙しますと

・アプリ内で画面回転対応(iPad含む)する方法
・UITableViewのGroup背景カラーを指定する方法
・DataFormatterにてYYYYを指定している場合

が挙げられます。

回転対応がもっとも重要で
スクリーンショット 2012-10-03 9.39.14
Info.plistのSupported interface Orientationsの部分で
アプリ全体の回転許可設定を確実に行い、

iOS6から実装されたメソッドを使って各画面の回転方向の制御を行う必要があります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
return YES;
}


iOS5までは各ViewControllerで上記メソッドで回転方向を指定することで制御が可能でした。
Info.plistの設定はほとんど活かしていなかったのが実情でしたが、
iOS6からはこのメソッドはコールされません。

代わりにViewController表示されるときに以下のメソッドがコールされます。

-(BOOL)shouldAutorotate{
return YES;
}

- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}



shouldAutorotateでそのViewController表示時に端末の姿勢が変化したとき、
自動で回転処理を行うことを許可するかどうかの設定。

supportedInterfaceOrientationsにて回転する方向を指定します。
この返り値はenumで以下のように列挙されています。

typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) {
UIInterfaceOrientationMaskPortrait,
UIInterfaceOrientationMaskLandscapeLeft,
UIInterfaceOrientationMaskLandscapeRight,
UIInterfaceOrientationMaskPortraitUpsideDown,
UIInterfaceOrientationMaskLandscape,
UIInterfaceOrientationMaskAll,
UIInterfaceOrientationMaskAllButUpsideDown,
};



縦、左、右、逆縦、左右、全て、逆縦以外すべてが定義されています。

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation


を使用すると、横専用画面から全て対応画面に遷移したとき、初期表示画面向きを指定できるようです。

しかしこれらメソッドはiOS6以上専用であり、
アプリ作成時に動作可能OSバージョンは4.3まで可能です。

つまり、iOS5まで用とiOS6以上で画面回転の設定とテストをそれぞれのバージョンをもった実機で確認しないといけません。

ヒー


UITableViewGroupの背景色の指定方法変更

今までViewの背景色において、

[self.view setBackgroundColor: [UIColor groupTableViewBackgroundColor]];


なんて指定していたアプリもあるかと思います。

しかしiOS6から問答無用でこの色は無視されてしまいます。

このメソッド定義のコメントにひょっこり以下のように明記されているからです。

// Group style table view backgrounds can no longer be represented by a simple color.
// If you want to have a background in your own view that looks like the table view background,
// then you should create an empty table view and place it behind your content.



簡単に言えば、この色を使いたかったら空っぽのUITableViewのGroupタイプを配置してねっと書いてあります。

つまり以下のように実装しろということですね。

UITableView* emptyTableView = [[UITableView alloc] initWithFrame: self.view.bounds style: UITableViewStyleGrouped];
[self.view addSubview: emptyTableView];
[emptyTableView release];



これはiOS5以前でも有効なので、
色指定していた部分は上記3行に修正するだけでOKとなります。

ヒーヒー

DataFormatterにてYYYYを指定していると
異なる日付が返ってくることがあるようです。

参考フォーラム

YYYYを指定しているとISO8601規格によるグレゴリオ暦に準拠した値が返ってくるようです。

これに関しては小文字のyyyyにすることで対応OKのようです。

ヒーヒーヒー

イーッ
関連記事
スポンサーサイト



Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/242-7eb5115e

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク