*

iOS6時代のアプリのiOS7への対応

公開日: : Tips , , ,

やや古い情報になるが、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を使うように修正。

関連記事

iOS9でのNSFetchedResultsContollerDelegateの挙動

ハマったので短いながらメモしたいと思います。 NSFetchedResultsContollerD

記事を読む

UIAlertControllerの取り扱い

旧聞ですが日本語版のStackOverflowが始動したようですね。 個人的な印象は「フィルタされ

記事を読む

ENMLからHTMLへの変換

最近EvernoteAPIをいじっているので、コレに関するノウハウをとりあえず断片的に引っかかったと

記事を読む

viewDidLoadとviewDidLayoutSubviewsのタイミング

真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view

記事を読む

iPadのUIModalPresentationFormSheetでキーボードが閉じない

iPadでUIModalPresentationFormSheet(全画面ではなく、中央にフロートし

記事を読む

UITableViewのセクションヘッダをStoryboardで作る時の参考

UITableViewのセクションヘッダをカスタムして作る際に、セルと同様にプロトタイピングするため

記事を読む

StoryboardからPopoverを作っても位置合わせコードは必要

これだけだとわかりづらいんですが。 XcodeのStoryboardから、Segueを"Prese

記事を読む

User Defined Runtime Attributeについての覚書

UILabelに上下左右のパディングをつける方法を探して、結局「自分で以下のようなメソッドを持った拡

記事を読む

実機テストしたときのデータを取り出す

Xcodeでコンパイルして実機テストしている場合に、テストデータを実機から取り出す方法です。 以下

記事を読む

ソースコードからStoryboardにアクセスする

複数のStoryboardを利用して、自分以外のStoryboardに遷移させるような展開をしたい場

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑