【问题标题】:iOS 7 tabBar-line, how to remove it?iOS 7 tabBar-line,如何删除它?
【发布时间】:2013-09-27 03:56:05
【问题描述】:

Apple 在 iOS 7 中的 tabBar 上添加了一条细线,应该作为 tabBar 和 UI 之间的阴影或淡入淡出

由于我使用的是定制的 tabBar,所以这条线很烦人。你如何删除它?请告诉我这是可能的,否则我需要重新设计我的整个应用程序大声笑....

/ 问候

*编辑

使用以下代码行解决了我的问题:

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

【问题讨论】:

标签: ios objective-c uitabbarcontroller uitabbar uitabbaritem


【解决方案1】:

我在UITabBar API 中没有看到任何影响该分隔符的内容,但如果分隔符位于 UITabBar(UIView 子类)内,我希望您可以在最重要的是。您必须抓取要显示在此处的图像的一部分并将其绘制在新视图中。而且我不确定 UITabBar 是否会以某种方式阻止添加子视图或阻止子视图位于顶部。但这就是我要开始的地方。

【讨论】:

  • 将 shadowImage 设置为清晰的图像应该可以摆脱它,前提是您还设置了 backgroundImage
【解决方案2】:
    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
    [[UITabBar appearance] setShadowImage:tabBarBackground];
    [[UITabBar appearance] setBackgroundImage:tabBarBackground];   

【讨论】:

  • 注意:如果你setShadowImage,它会占用标签栏控制器上方的一些空间。最好用[[UITabBar appearance] setShadowImage:[[UIImage alloc] init];提供一个空的透明的UIImage
  • @Raptor 你是个天才。
【解决方案3】:
self.tabBarController =  [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

【讨论】:

  • 这段代码很混乱。变量名是tabBar,但是你在上面初始化UITabBarController
  • 我的建议:将变量重命名为tabBarController以避免混淆
  • tabBar 是 UITabBarController 的对象。这意味着,@property (nonatomic,retain) UITabBarController* tabBar;我已经将名称 tabBar 编辑为 tabBarController(@property (nonatomic,retain) UITabBarController* tabBarController)。现在您可以理解代码而不会混淆。
【解决方案4】:

AppDelegate.mdidFinishLaunchingWithOptions:方法中添加如下代码

if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

【讨论】:

    【解决方案5】:

    这些代码对我来说效果很好(我没有标签栏的背景图片):

    [tab_main.tabBar setBackgroundImage:[[UIImage alloc] init]];
    [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
    

    我也使用这些代码来添加框架:

    UIColor* color_green = UIColorFromRGB(0x348e5b);
    tab_main.tabBar.layer.borderWidth = 0.50;
    tab_main.tabBar.layer.borderColor = color_green.CGColor;
    [[UITabBar appearance] setTintColor:color_green];
    

    希望对您有所帮助。

    【讨论】:

      【解决方案6】:

      这对我有用

      UIImage* tabBarBackground = [UIImage new];
      if(!OSVersionIsAtLeastiOS7())
      {
          tabBarBackground = [UIImage imageNamed:@"whitebg"];
      }
      [[UITabBar appearance] setShadowImage:tabBarBackground];
      
      [[UITabBar appearance] setBackgroundImage:tabBarBackground];
      

      【讨论】:

        【解决方案7】:

        在 iOS 8 中,可以通过在检查器中将标签栏样式设置为黑色来移除顶部边框。

        【讨论】:

        • 好吧,它不会删除它,而是让它变白,我有一个大的中心按钮,虽然它会切割它
        【解决方案8】:
         [_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
        [self.tabBarController.tabBar setClipsToBounds:YES];
        

        这段代码也解决了我的问题

        【讨论】:

          【解决方案9】:

          斯威夫特

          不错的简单解决方案:

          在您的自定义标签栏类中编写以下代码。然后它会隐藏水平阴影线。

          self.tabBar.setValue(true, forKey: "_hidesShadow")
          

          目标 C

          [self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
          

          【讨论】:

          • 私有 API 不是首选。
          【解决方案10】:

          在我的情况下,我还需要设置一个不同的阴影,最后,在设置自定义阴影的同时唯一有效的方法是在标签栏上方添加一个单点高 UIView 1 点:

              UIView *whiteLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, -1.0, self.tabBar.frame.size.width, 1.0)];
              whiteLine.backgroundColor = [UIColor whiteColor];
              [self.tabBar addSubview:whiteLine];
          

          【讨论】:

            【解决方案11】:

            现在你可以使用它了,这行代码:

            self.tabBarController.tabBar.barStyle = UIBarStyleBlack; 
            

            【讨论】:

              【解决方案12】:

              试试这个, ** Objective-C **

              //Remove shadow image by assigning nil value.
              [[UITabBar appearance] setShadowImage: nil];
              
              // or 
              
              // Assing UIImage instance without image reference
              [[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];
              

              ** 斯威夫特 **

              //Remove shadow image by assigning nil value.
              UITabBar.appearance().shadowImage = nil
              
              // or 
              
              // Assing UIImage instance without image reference
              UITabBar.appearance().shadowImage = UIImage()
              


              这是shadowImage 的苹果文档。

              @available(iOS 6.0, *)
              open var shadowImage: UIImage?
              

              默认为零。非零时,显示自定义阴影图像而不是 默认阴影图像。要显示自定义阴影,自定义 背景图像也必须用 -setBackgroundImage 设置:(如果 使用默认背景图像,默认阴影图像将是 使用)。

              【讨论】:

                猜你喜欢
                • 2017-04-13
                • 2014-01-25
                • 1970-01-01
                • 2014-02-10
                • 1970-01-01
                • 2013-10-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多