iOS UITabBar:删除顶部阴影渐变线

我实现了一个自定义UITabBar,我仍然有这个梯度/阴影的顶部。 我补充说

[self.tabBar setBackgroundImage:[UIImage imageNamed:@"navBarBottom.png"]];

这只是改变背景,但保持阴影渐变。

我究竟做错了什么 ? 有什么要指定摆脱它?

我拥有的 :

顶部的影子

我想要的是 :

没有阴影

谢谢。

尝试为UITabBar设置1×1像素的透明阴影图像:

 [[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]]; 

相似的回答这个问题 …如果你不想弄乱任何forms的1×1透明图像,这个工作也是:

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

在迅速:

 UITabBar.appearance().shadowImage = UIImage() UITabBar.appearance().backgroundImage = UIImage() 

迅速

试试这个你的自定义标签栏。 它会隐藏水平阴影线。

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

目标C

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

调用[[UITabBar appearance] setShadowImage:]将自定义您的应用程序中的所有UITabBar实例。

如果你想自定义一个UITTabBar ,你可以这样做:

 [self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]]; 

这是另一个容易实现的答案:

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

为我工作

把它放在你的AppDelegate的 didFinishLaunchingWithOptions下:

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

在你的视图控制器或视图控制器或BasicViewController,大多数视图控制器inheritanceviewDidLoad只是把这两行:

 [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tab_bar_background"]]; [[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparent_shadow"]]; 

请确保transparent_shadow@2x.png是图片1×1或2×2透明,而tab_bar_background@2x.png是图片640×100,底部栏高度是50px。

适用于iOS 9.3

试试这个viewDidload。

 override func viewDidLoad() { super.viewDidLoad() self.tabBar.setValue(true, forKey: "_hidesShadow") } 

它为我工作

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

** Swift **

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

在iOS 7中 – 这个工作:

 [self.actionToolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny]; [self.actionToolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 

希望能帮助别人。