むっちゃ変わったわー。
ということで小技というかちょっとしたことの覚え書き。いろんな所から拾って来た情報を集積する感じ。
【iOS7専用ロジックの実装】
正確には「iOS6.1以下」を見分けるロジックだが…まぁ不等号変えればいいだけの話。
if(floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1){}
なんでこんなことせにゃならんのかというと、UINavigationBar回りの仕様が全然違うから。
デフォルトが「バー色白、ボタンTintは空色、半透明」なので、appearanceを設定してtintとか設定してやらないといけない。一応iOS6系統のデフォルトは半透明についてはNOがデフォルトということになっているようなのでいいのだが。
色回りはUIBarButtonItemともどもTintを設定しないといけない。
ところでUIBarButtonItemのtintさんはUIBarButtonStyleBorderedの場合はボーダーボタンの背景色をさすんですが、UIBarButtonStylePlainの場合はボタン本体の色をさします。色指定面倒くせぇ。
今回弄ったアプリはUINavigationBarにあるボタンだけがBorderedだったので、こんなTintの設定で逃げました。appearanceWhenContainedInに指定したクラスだと、親クラスによるアピアランスの制限をしてくれるんですね。よかったよかった。
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor colorWithRed:10/255.0 green:20/255.0 blue:50/255.0 alpha:1]];
このappearanceの設定はiOS6以下のデザインとiOS7のデザインをわける(iOS7だとフラットデザイン風のカスタム画像を使う、とか)時にも重宝。
【UIPopoverControllerの罠】
UIPopoverControllerも従前は黒っぽい背景だったのが真っ白になる。黒背景を信じて設定したコンテンツの色が酷いことになったのでこれも修正。
【UIPickerViewの罠】
どのくらい罠かというと従前はドラム部分は自前で不透明のコンポーネント持ってたのが透明になるんですよ! 一番わかり易いのは「時計」のタイマー設定部分ですかね。
おかげで面白いように見づらくなる部分があってフイタ。
【レイアウト】
UIViewControllerで「self.view.frame」使って子ビューのframe定義したら位置がずれた…iOS7からはレイアウトがフルスクリーン前提なので、frameのoriginが下にずれる(ステータスバー+ナビゲーションバーの分)という罠!
self.view.boundsを使えばよかったんだけど気づかないでリリースしないでよかった…。
他にもあるけど、とりあえずにぎやかし的記事なのでこのくらいに(ぉぃ)