【问题标题】:Customize the tabbar and tabbar item自定义标签栏和标签栏项目
【发布时间】:2013-08-16 08:23:54
【问题描述】:

我在我的应用程序中使用UITabbarController,并且我将框架设置为它,以便标签栏显示在中心。我是如此改变标签栏的颜色和图像,但我想删除小边缘它不清楚我怎样才能清除颜色变成白色。

代码: [[UITabBar appearance] setShadowImage : [UIImage imageNamed:@"white.png"]];

【问题讨论】:

    标签: iphone ios objective-c uitabbarcontroller uitabbar


    【解决方案1】:

    另一种选择是,添加

    #import <QuartzCore/QuartzCore.h>
    

    框架和使用

    self.tabBarController.tabBar.layer.borderWidth = 0.50;
    self.tabBarController.tabBar.layer.borderColor = self.tabBarController.tabBar.tintColor.CGColor;
    

    【讨论】:

    • 我可以去掉那个边框吗:)
    • 为什么我不能在故事板中使用用户定义的运行时属性修改这些属性?
    • @klefevre 因为运行时属性使用 UIColor 而 CALayer 使用核心图形或 CGColors。如果需要,您可以添加一个 CALayer+RuntimeAttributes 来转换它。制作一个看起来像这样的方法: - (void)setShadowSBColor:(UIColor *)shadowUIColor { self.shadowColor = shadowUIColor.CGColor;然后调用 do layer.shadowSBColor 作为运行时属性。覆盖您需要的任何其他方法
    • @gadu 我听到了你在说什么,我认为它可以是世界的,但我/你可以通过情节提要修改 borderColorUIButtonUIView 而无需创建一个类别。
    • @klefevre 不幸的是,每当您在 CALayer 上编辑任何内容(layer.shadowColor、layer.borderColor 等)时,您都需要传递 CGColor 而不是 UIColors,并且运行时属性使用 UIColors。因此,如果您想使用运行时属性,您实际上确实需要这样做。如果您只想更改整个背景颜色或其他简单的东西,您可以使用默认情节提要选项,但情节提要上没有部分边框或任何内容的选项。
    【解决方案2】:

    添加 clipsToBounds 并设置为 YES。

    【讨论】:

      【解决方案3】:
      [[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentImage.png"]];
      

      用透明图片试试这个。

      [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
      [[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
      

      这些都有责任。尝试第二种方法,因为第一种方法不适合您。

      【讨论】:

      • 感谢您的回复。我已经做到了,但我没有运气。
      • 然后,设置tabBar.clipsToBounds = YES; 属性。 @Napster
      • self.tabBarController.tabBar.clipsToBounds = YES;它不工作:)