問題があります。TabBarで半透明のボックスをオフにすると、ビューの一部がブロックされます。
それは一種の余分なタブバーのようです、または私も知りません。ストーリーボードを使っています。
添付の画像をご覧ください:
半透明(オフ-いいえ):
半透明の場合(ONまたはYES):
それがなぜこのように見えるのか誰か知っていますか?
ありがとう
PS:皆さんはどのタブバーが好きですか?黒またはこれ:
これは、iOS7でtabBar.translucent
からNO
へ。 iOSは賢くしようとしていて、「タブバーは半透明ではないので、すべてを上にプッシュする方がよい」と言っています。これを修正するには、タブバーコントローラ内にあるナビゲーションコントローラ内のビューコントローラのextendedLayoutIncludesOpaqueBars
プロパティをYES
に設定します。
例(実際には実行されません):
UITabBarController *tabBarController = [[UITabBarController alloc] init];
tabBarController.tabBar.barStyle = UIBarStyleBlack;
tabBarController.tabBar.translucent = NO;
UIViewController *viewController = [[UIViewController alloc] init];
viewController.extendedLayoutIncludesOpaqueBars = YES; // <-- This is important!!!!!!
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: viewController];
tabBarController.viewControllers = @[navigationController];
ところで、私は非半透明のタブバーが一番好きです。
編集
Andyが後述するように、このフラグはコードで設定する必要はありません。使用する場合は、IBで設定できます。
前述のように here barTintColorを色を変更したいものに設定する必要があります。
これらの設定は、barStyleのスタイルまたはbarTintColorのカスタム色を設定すると自動的に適用されます。必要に応じて、プログラムで半透明プロパティをNOに設定することにより、タブバーを不透明にすることができます。この場合、バーは、タブバーがUIBarStyleBlackスタイルの場合は黒、タブバーがUIBarStyleDefaultの場合は白、カスタム値が定義されている場合はタブバーのbarTintColorを使用して不透明な背景を描画します。
プロジェクトで使用したもの
self.tabBarController.tabBar.barTintColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
self.tabBarController.tabBar.translucent = NO;
TableViewと半透明のNavigationBarと半透明のTabBarの両方を備えたコントローラーがあります。
この状況では、viewController.extendedLayoutIncludesOpaqueBars = YES;
両方のバーがテーブルビューと重なるという問題が発生します。
設定で管理できますviewController.edgesForExtendedLayout = UIRectEdgeBottom;
これにより、Table Viewはタブバーの後ろにのみ隠れます。
すべきが画面の下部にある場合、その下部がタブバーの上部と同じ位置になるようにビューコントローラーのビューを設定したようです。これを行うと、タブバーが半透明に設定されているかどうかに関係なく、コンテンツが正しく表示されます(コンテンツはタブバーから見えるかどうかにかかわらず)。
実際にwant半透明のTabbarと背後に表示されるテーブルビュー(またはコレクションビュー)を表示する人のために、これがios 7/8の解決策です。
制約を使用している場合は、テーブルビューの下部にある「ボトムレイアウトガイド」に制約を追加して、テーブルビューがタブバーの前で停止するようにする必要があります。これはStoryboardの例ですが、コードでも実行できます。
次に、 "clipsToBounds"プロパティをNOに設定して、タブバーの背後にあるテーブルビューが引き続き表示されることを確認する必要があります。
self.mytableview.clipsToBounds = NO;
これが私の解決策です。