iOS 7 TabBar半透明问题

Mic*_*tiz 18 iphone objective-c uitabbar ios7

我有一个问题,当我在TabBar上设置半透明盒子时,有些东西阻挡了我的一些视图.

它看起来像是一种额外的标签栏,或者我甚至都不知道.我正在使用故事板.

请看附图:

半透明(OFF - NO):

半透明(OFF  -  NO)

使用半透明(ON或YES):

半透明(ON或YES)

有人知道它为什么会这样吗?

谢谢

PS:你喜欢哪个tabBar?黑色还是这个:

在此输入图像描述

nal*_*d88 75

设置tabBar.translucent为iOS7时会发生这种情况NO.iOS正试图变得聪明并说"嘿,tabbar不是半透明的,所以我们最好把所有东西都放在它上面".通过extendedLayoutIncludesOpaqueBars在tabbar控制器内部的导航控制器内设置视图控制器的属性来修复它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];
Run Code Online (Sandbox Code Playgroud)

资料来源:https://web.archive.org/web/20160405135605/https : //developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

顺便说一下,我最喜欢非半透明的tabbar.

编辑

正如Andy在下面提到的,这个标志不必在代码中设置.您可以在IB中设置它,如果这是您使用的.

  • 对于Xcode6中的Storyboard,此标志位于"View Controller">>"Extend Edges"组中,名为"Under Opaque Bars". (3认同)

Ali*_*our 10

如上所述,您必须将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;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ano 6

我有带TableView的控制器和半透明的NavigationBar和半透明的TabBar.
在这种情况下,使用

viewController.extendedLayoutIncludesOpaqueBars = YES;

会导致两个条形覆盖我的表视图的问题.

可以通过设置

viewController.edgesForExtendedLayout = UIRectEdgeBottom;

TableView隐藏在Tab Bar后面的结果来管理它.