43

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

在此处输入图像描述

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

/ 问候

*编辑

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

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

12 回答 12

22
    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
    [[UITabBar appearance] setShadowImage:tabBarBackground];
    [[UITabBar appearance] setBackgroundImage:tabBarBackground];   
于 2013-09-27T10:28:26.820 回答
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];

希望有帮助。

于 2014-04-29T16:27:41.740 回答
7

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

于 2014-11-03T06:51:31.823 回答
5

迅速

不错的简单解决方案:

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

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

目标 C

[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
于 2015-10-27T11:21:41.880 回答
1
self.tabBarController =  [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
于 2014-03-07T05:00:01.420 回答
0

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

于 2013-09-22T00:44:50.333 回答
0

AppDelegate.m didFinishLaunchingWithOptions:在方法中添加以下代码

if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
于 2014-03-19T12:23:29.130 回答
0

这对我有用

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

[[UITabBar appearance] setBackgroundImage:tabBarBackground];
于 2014-06-23T12:31:04.753 回答
0
 [_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];

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

于 2015-07-03T12:02:36.450 回答
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];
于 2017-03-16T22:48:55.363 回答
0

试试这个,** 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 设置自定义背景图像:(如果使用默认背景图像,将使用默认阴影图像)。

于 2018-05-07T12:58:05.847 回答
-1

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

self.tabBarController.tabBar.barStyle = UIBarStyleBlack; 
于 2018-05-07T09:52:41.287 回答