web-dev-qa-db-ja.com

iOS 7 TabBar半透明の問題

問題があります。TabBarで半透明のボックスをオフにすると、ビューの一部がブロックされます。

それは一種の余分なタブバーのようです、または私も知りません。ストーリーボードを使っています。

添付の画像をご覧ください:

半透明(オフ-いいえ):

With Translucent (OFF - NO)

半透明の場合(ONまたはYES):

With Translucent (ON or YES)

それがなぜこのように見えるのか誰か知っていますか?

ありがとう

PS:皆さんはどのタブバーが好きですか?黒またはこれ:

enter image description here

18
Michael Ortiz

これは、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];

ソース: https://web.archive.org/web/20160405135605/https://developer.Apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

ところで、私は非半透明のタブバーが一番好きです。

編集

Andyが後述するように、このフラグはコードで設定する必要はありません。使用する場合は、IBで設定できます。

74
nalyd88

前述のように 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;
10
Ali Riahipour

TableViewと半透明のNavigationBarと半透明のTabBarの両方を備えたコントローラーがあります。
この状況では、

viewController.extendedLayoutIncludesOpaqueBars = YES;

両方のバーがテーブルビューと重なるという問題が発生します。

設定で管理できます

viewController.edgesForExtendedLayout = UIRectEdgeBottom;

これにより、Table Viewはタブバーの後ろにのみ隠れます。

6
Marciano

すべきが画面の下部にある場合、その下部がタブバーの上部と同じ位置になるようにビューコントローラーのビューを設定したようです。これを行うと、タブバーが半透明に設定されているかどうかに関係なく、コンテンツが正しく表示されます(コンテンツはタブバーから見えるかどうかにかかわらず)。

2
Caleb

実際にwant半透明のTabbarと背後に表示されるテーブルビュー(またはコレクションビュー)を表示する人のために、これがios 7/8の解決策です。

制約を使用している場合は、テーブルビューの下部にある「ボトムレイアウトガイド」に制約を追加して、テーブルビューがタブバーの前で停止するようにする必要があります。これはStoryboardの例ですが、コードでも実行できます。
enter image description here
次に、 "clipsToBounds"プロパティをNOに設定して、タブバーの背後にあるテーブルビューが引き続き表示されることを確認する必要があります。

self.mytableview.clipsToBounds = NO;

これが私の解決策です。

1
Michael Pirotte