我有一个问题,当我在TabBar上设置半透明盒子时,有些东西阻挡了我的一些观点。
它看起来像是一种额外的标签栏,或者我甚至都不知道。我正在使用故事板。
请参阅附件中的图片:
半透明(OFF - NO):
使用半透明(ON或YES):
有人知道为什么会这样吗?
谢谢
PS:你喜欢哪个tabBar?黑色还是这个:
答案 0 :(得分:74)
当您将tabBar.translucent
设置为NO
时,会在iOS7中发生这种情况。 iOS正试图变得聪明并说“嘿,tabbar不是半透明的,所以我们最好把所有东西都放在它上面”。通过将标签控制器内部的导航控制器内的视图控制器的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];
顺便说一句,我最喜欢非半透明的tabbar。
修改强>
正如Andy在下面提到的,这个标志不必在代码中设置。如果你使用的话,你可以在IB中设置它。
答案 1 :(得分:10)
如上所述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;
答案 2 :(得分:6)
我有一个带有TableView的控制器和半透明的NavigationBar和半透明的TabBar。
在这种情况下使用
viewController.extendedLayoutIncludesOpaqueBars = YES;
会导致两个条重叠在我的桌面视图中的问题。
可以通过设置
viewController.edgesForExtendedLayout = UIRectEdgeBottom;
来管理,这导致TableView仅隐藏在标签栏后面。
答案 3 :(得分:2)
看起来你已经设置了视图控制器的视图,使其底部位于与标签栏顶部相同的位置,当它应位于屏幕底部时。如果您这样做,那么您的内容是否会正确显示(内容可通过标签栏显示)标签栏是否设置为半透明。
答案 4 :(得分:1)
对于那些实际上想要的半透明Tabbar和桌面视图(或者我的集合视图)可以在后面看到的人,这是我的ios 7/8解决方案:
如果您正在使用约束,则应在表格视图底部添加一个约束到&#34;底部布局指南&#34;所以你的tableview在Tabbar之前停止。这是Storyboard的一个例子,但它也可以在代码中完成
然后你只需要通过设置&#34; clipsToBounds&#34;来确保你仍然可以看到Tabbar后面的表格视图。财产到NO。
self.mytableview.clipsToBounds = NO;
这是我的解决方案,希望它有所帮助。
答案 5 :(得分:0)
我认为当前接受的答案不正确。您不需要 扩展不透明条下面的布局即可解决此问题。
OP中没有提供代码,但是包含项目的视图底部可能被限制在其超级视图的底部,这将使这些项目位于半透明的标签栏下方。为避免这种情况,可以从底部设置手动插入。简而言之,超级视图在半透明条的下方延伸,其子视图也在其下方。
选项卡栏不透明后,根视图(或超级视图)仅会扩展到选项卡栏的顶部。
“更多”正确的解决方法是只删除手动插入的内容,而不是在不透明的条形下扩展视图。