iOS6時代のアプリのiOS7への対応
公開日:
:
Tips iOS6, iOS7, UIPickerView, UIPopoverController
やや古い情報になるが、iOS7対応に関して自分がやったことの覚え書き。いろんな所から拾って来た情報を集積しておく。
【iOS7専用ロジックの実装】
正確には「iOS6.1以下」を見分けるロジックだが…まぁ不等号変えればいいだけの話。
if(floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1){ // ここに処理 }
iOS7ではUINavigationBar周りでデザイン、仕様が異なり、デフォルトが「バー色白、ボタンTintは空色、半透明」なため、appearanceを設定してtintとか設定してやらないといけない。
一応iOS6系統のデフォルトは半透明についてはNOがデフォルトということになっているようなのでいいのだが、色回りはUIBarButtonItemともどもTintを設定しないといけない。
また、iOS6ではUIBarButtonItemのtintプロパティはUIBarButtonStyleBorderedの場合はボーダーボタンの背景色を指定するプロパティだったのだが、UIBarButtonStylePlainの場合はボタンの文字色を指すため、appearanceなどでの色指定には気をつかわないといけない。
UINavigationBarのtint次第では見難くなることも考えられる。
自分が修正したアプリは、UINavigationBarにあるボタンだけがBorderedだったので、appearanceWhenContainedInを使ってTintの設定をするという方法を使えば、親クラスによって親クラスによるアピアランスの制限をしてくれるため、
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor colorWithRed:10/255.0 green:20/255.0 blue:50/255.0 alpha:1]];
と設定して、他のUIBarButtonへの影響(具体的にはツールバー)を抑えて、修正をすることができた。
このappearanceの設定はiOS6以下のデザインとiOS7のデザインをわける(iOS7だとフラットデザイン風のカスタム画像を使う、とか)時にも重宝する。
【UIPopoverController関連】
UIPopoverControllerも従前は枠、背景色ともに黒っぽい色だったのが真っ白になる。黒背景を信じて設定したコンテンツの色が酷いことになったのでこれも修正。
自分でUIViewを下に敷いておけばこんなことはない。
【UIPickerViewの関連】
従前はドラム部分は自前で不透明のコンポーネント持ってたのが透明になる。
一番わかり易いのは「時計」アプリのタイマー設定部分は、背景色が白なので目立たないが、UIPickerViewをPopoverで表示しているiPadアプリなどは1つ前の修正と合わせて大変なことになる。
やっぱり自分でUIViewを下に敷くのが一番だった、というオチ。
【レイアウト】
UIViewControllerで「self.view.frame」使って子ビューのframe定義したら位置がステータスバー分ずれる。
iOS7からはレイアウトがフルスクリーン前提なので、frameのoriginがステータスバー+ナビゲーションバーの分だけ下にずれるので、当該部分はself.view.boundsを使うように修正。
関連記事
-
-
CALayerの管理
CALayerはNSKeyValueCodingを実装している(Core Animation Ext
-
-
UIAlertControllerの取り扱い
旧聞ですが日本語版のStackOverflowが始動したようですね。 個人的な印象は「フィルタされ
-
-
iPadのUIModalPresentationFormSheetでキーボードが閉じない
iPadでUIModalPresentationFormSheet(全画面ではなく、中央にフロートし
-
-
UIButtonのLocalizeに関するTips
Storyboardに設置したUIButtonのタイトルのLocalizeをしてたのですが、英語では
-
-
viewDidLoadとviewDidLayoutSubviewsのタイミング
真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view
-
-
AdMob組み込み覚書
書籍ではコレがかなり参考になるのでご紹介。 表題の通りで、組み込みで要注意っぽい部分だけを
-
-
plistファイルに色を入れる
plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ
-
-
メソッドの呼び出し元を調べる
特定のメソッドに関して、そのメソッドをコールしているメソッド群を調べるための手順。 (1)調べたい
-
-
preferredContentSizeをUINavigationContorllerのPop時に再設定する
popoverで表示しているViewControllerのサイズを、他のViewController
-
-
UITableViewCellのロングタップ
UITableViewCellをロングタップしたときに、タップされたセルを認識しつつメニューを出した