【问题标题】:iOS 7 TabBar Translucent issueiOS 7 TabBar 半透明问题
【发布时间】:2014-01-25 14:05:41
【问题描述】:

我遇到了一个问题,当我在 TabBar 上关闭半透明框时,有些东西挡住了我的视线。

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

请看附上的图片:

半透明(关闭 - 否):

半透明(开或是):

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

谢谢

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

【问题讨论】:

标签: iphone objective-c ios7 uitabbar


【解决方案1】:

看起来您已经设置了视图控制器的视图,使其底部与标签栏顶部位于相同位置,而它应该位于屏幕底部。如果您这样做,那么无论标签栏是否设置为半透明,您的内容都会正确显示(内容是否通过标签栏可见)。

【讨论】:

    【解决方案2】:

    当您将tabBar.translucent 设置为NO 时,iOS7 中会发生这种情况。 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 中设置。

    【讨论】:

    • Storyboard 视图控制器设置中提供了相同的标志。
    • 好点,谢谢@Andy!我会更新我的答案来提及这一点。
    • 谢谢!我被困了一会儿。在我阅读您的答案之前,行为毫无意义
    • 它有效。我有同样的问题并解决了。谢谢
    • 对于 Xcode6 中的 Storyboard,此标志位于“View Controller”>>“Extend Edges”组下,称为“Under Opaque Bars”。
    【解决方案3】:

    如here 所述,您必须将 barTintColor 设置为您想要更改颜色的内容。

    当您为 barStyle 设置任何样式或为 barTintColor 设置任何自定义颜色时,这些设置会自动应用。如果您愿意,可以通过以编程方式将 translucent 属性设置为 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;
    

    【讨论】:

      【解决方案4】:

      对于那些真正想要半透明的 Tabbar 和可以在后面看到的表格视图(或集合视图)的人,这里是我的 ios 7/8 解决方案:

      如果您使用约束,您应该在表格视图底部添加一个到“底部布局指南”,以便您的表格视图在 Tabbar 之前停止。这是 Storyboard 的示例,但也可以在代码中完成。

      然后您只需要通过设置“clipsToBounds”属性确保您仍然可以看到 Tabbar 后面的表格视图到NO。

      self.mytableview.clipsToBounds = NO;
      

      这是我的解决方案,希望对您有所帮助。

      【讨论】:

        【解决方案5】:

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

        viewController.extendedLayoutIncludesOpaqueBars = YES;

        会导致两个栏与我的表格视图重叠的问题。

        可以通过设置

        viewController.edgesForExtendedLayout = UIRectEdgeBottom;

        进行管理,这样TableView只隐藏在Tab Bar后面。

        【讨论】:

          【解决方案6】:

          我认为当前接受的答案不正确。您不需要需要扩展不透明条下的布局来解决问题。

          OP 中没有提供代码,但可能包含项目的视图底部被限制在其父视图的底部,这会将项目置于半透明标签栏下方。为了防止这种情况,可以从底部设置手动插图。简而言之,超级视图在半透明条下方延伸,其子视图也是如此。

          一旦标签栏变得不透明,根视图(或超级视图)只会延伸到标签栏的顶部。

          “更多”正确的解决方法是仅删除手动插入的内容,而不是在不透明条下扩展视图。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-11
            • 1970-01-01
            相关资源
            最近更新 更多