- マイクの使用にパーミッションが必要になったこと
- storyboard がiOS6, iOS7用のviewに分かれ, iOS7用のviewで不具合が
内容
- マイクのパーミッション
- バージョンの取得と動作
- Navigationbarの処理
マイクのパーミッション
GPSのデータを使用する際やプッシュ通信の許可と同様に, ダイアログが出てきます(iOS7)。 その許可なくマイクロを使用すると, Applicationが落ちるそうです。 以下のコードを追加します。if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)]) { [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL allowed){ NSLog(@"Allow microphone use? %d", allowed); if ( !allowed ) { // If not enabled microphone, here is } }]; }iOS6ではこのコードは無視されます。当然iOS7 SDKでコンパイルしないといけません。requestRecordPermission というメソッドが存在しないからです。 一度許可すると, allowed の部分が常に, trueになります。ダイアログは出ません。 ですので, マイクを使用する部分にこのコードを入れておくとよいでしょう。 ブロックコードでないバージョンもあります。
バージョンの取得と動作
いろいろ7のおかげで動かなくなったUIのために, バージョン別コードを挿入する必要があったので作っておく+(BOOL)isOver7 { const float version = [[[UIDevice currentDevice] systemVersion] floatValue]; return version >= 7.0; }iOS7の場合, trueが返ります。 UIDevice の systemVersionを使います。
Navigationbarの処理
ここからはUIの管理です。 UIに関しては, Guideが詳しい。いろいろ対処法を伝授してくれるはず。 端的に問題をいいますと, Navigationbar が透明になって, 座標の位置が変わった。 今まで viewがbar の下から始まっていましたが透明になって, barの位置からになりました。ので, UIがずれます。不透明にしてiOS6と同じ座標位置にする
これは簡単な対処です。self.navigationController.navigationBar.translucent = NO;UINavigationBar の translucent を使います。これで不透明になります。
地道にデルタを使ってUIの位置を直す
※AutoLayoutのプロパティをチェックしてればこの設定はありません。そして必要ありません。(デルタの部分は出てきません) iOS6の位置と, iOS7の位置をInterfaceBuider のデルタを使って変更することができます。つまり, 透明になった部分だけずらすということです。 さて, storyboardがどう変わったのか見てみましょう。storyboardのviewという欄でiOS6, iOS7のViewが登場します。選択すると, 見た目の違いがここで確認できます。
UITabbar
Navigationbarと同じでありまた, カスタムで画像や色を変更している場合は, 結構引っ掛かります。 tabbaritem の画像を変更している場合 setFinishedSelectedImage を使いますが, なぜかいうことを聞きません。 selectedImage というプロパティを直接操作します。item.selectedImage = [UIImage imageNamed:@"filename"];同様に, 不透明にできます。(ただしiOS7しか使えないので, 6では実行されないように処理する必要があります)
self.tabBarController.tabBar.translucent = NO;※UIに関しては, AutoLayout機能でなんとかしてくれたりします。ですので一概に問題が発生するとは言い難いです。 AutoLayoutはiOS6以降ですけども。
0 件のコメント:
コメントを投稿