*

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を使うように修正。

関連記事

Xcode5.1のInterfaceBuilderにおける地味な変更点

iOS7.1に合わせてXcode5.1がリリースされました Xcode Release N

記事を読む

AVAudioPlayerの初回再生遅延

ちょっとした効果音の再生にAVAudioPlayerを使っているのですが、どうも初回の効果音ロードの

記事を読む

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

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

記事を読む

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

アセットにあるUIImageの直接指定が可能なImage literalですが、気がついたらアセット

記事を読む

ENMLからHTMLへの変換

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

記事を読む

警告を無視する

HokusaiというライブラリをObj-Cのアプリで使うために奮闘してるのですが(これはこれで別記事

記事を読む

UICollectionViewのヘッダとフッタの設定

UICollectionViewで慣れないのがヘッダフッタで、毎度「どうやって設定するんだっけ…」と

記事を読む

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

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

記事を読む

UISplitViewControllerの仕切り線の色を設定

UISplitViewControllerで、iPadを横向き(Landscape)にしたときの2つ

記事を読む

UISegmentedControlに見栄え良く背景色を設定する

UISegmentedControlをiOS7で使おうとすると、基本の背景色が「透明」になりますが、

記事を読む

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

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

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

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

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

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

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

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

NXDrawKitを導入してみる

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

→もっと見る

    PAGE TOP ↑