iOS 7 tabBar-line,如何删除它?

时间:2013-09-22 00:38:38

标签: ios objective-c uitabbarcontroller uitabbar uitabbaritem

Apple在iOS 7中的tabBar上添加了一条小线,它可以作为tabBar和UI之间的阴影或淡入淡出

enter image description here

由于我使用的是定制的tabBar,因此该行极具刺激性。你怎么删除它?请告诉我这是可能的,否则我需要重新设计我的整个应用程序大声笑....

/问候

*修改

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

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

12 个答案:

答案 0 :(得分:22)

    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
    [[UITabBar appearance] setShadowImage:tabBarBackground];
    [[UITabBar appearance] setBackgroundImage:tabBarBackground];   

答案 1 :(得分:14)

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

[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];

希望有所帮助。

答案 2 :(得分:7)

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

答案 3 :(得分:5)

<强>夫特

很简单的解决方案:

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

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

目标C

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

答案 4 :(得分:1)

self.tabBarController =  [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

答案 5 :(得分:0)

我在UITabBar API中没有看到任何影响该分隔符的内容,但如果分隔符在UITabBar(UIView子类)中,我希望你可以插入一个新的像素高UIView在它之上。您必须抓住要在其中显示的图像的一部分并在新视图中绘制它。而且我不确定UITabBar是否会以某种方式阻止添加子视图或阻止子视图位于顶部。但那是我开始的地方。

答案 6 :(得分:0)

AppDelegate.m didFinishLaunchingWithOptions:方法

中添加以下代码
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

答案 7 :(得分:0)

这对我有用

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

[[UITabBar appearance] setBackgroundImage:tabBarBackground];

答案 8 :(得分:0)

 [_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];

此代码也解决了我的问题

答案 9 :(得分:0)

在我的情况下,我还需要设置一个不同的阴影,最后在设置自定义阴影时唯一有用的是在标签栏上方添加单点高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];

答案 10 :(得分:0)

试试这个, **目标-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]];

** Swift **

//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil

// or 

// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()


这是shadowImage的Apple文档。

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

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

答案 11 :(得分:-1)

现在您可以使用此行:

self.tabBarController.tabBar.barStyle = UIBarStyleBlack;