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

htt*_*ete 42 iphone uitabbarcontroller uitabbar ios

我实现了一个自定义UITabBar,我仍然在它上面有这个渐变/阴影.我补充道

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

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

我究竟做错了什么 ?是否有任何指定摆脱它?

是)我有的 :

顶影

我想要的是 :

没影子

谢谢.

Jak*_*lik 120

类似的回答这个问题 ...如果你不想搞乱任何类型的1x1透明图像,这项工作也是如此:

[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]]; 
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Run Code Online (Sandbox Code Playgroud)

在快速:

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
Run Code Online (Sandbox Code Playgroud)

  • 别忘了:[[UITabBar外观] setBackgroundImage:[[UIImage alloc] init]]; (8认同)
  • 在iOS 12上可用。但是在iOS13上不再可用!有人尝试过吗?有一个新的`tabBar.standardAppearance.shadowImage`,但是根本不起作用... (2认同)

Bri*_*ang 37

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

[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
Run Code Online (Sandbox Code Playgroud)

  • 重要说明:除非您还使用setBackgroundImage设置背景图像,否则默认会忽略"setShadowImage"的值.所以你总是要设置两个![来自Apple docs] (4认同)

Sou*_*rma 16

迅速

试试这个自定义标签栏吧.它会隐藏水平阴影线.

self.tabBar.setValue(true, forKey: "_hidesShadow")
Run Code Online (Sandbox Code Playgroud)

目标C.

[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
Run Code Online (Sandbox Code Playgroud)

  • 这是访问私有API,因此可能导致拒绝,并可能在iOS的未来版本中中断. (4认同)
  • 您还可以在"用户定义的运行时属性"部分下的UITabBar的Identity Inspector窗格中的Interface Builder中添加它.点击+添加一行并输入_hidesShadow键和值. (2认同)

Alf*_*lfi 10

斯威夫特4

UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)

  • 仅使用`UITabBar.appearance()。clipsToBounds = true`具有相同的效果。 (2认同)

Mir*_*zal 10

此代码适用于 iOS 13 及更低版本

if #available(iOS 13, *) {
    let appearance = self.tabBar.standardAppearance.copy()
    appearance.backgroundImage = UIImage()
    appearance.shadowImage = UIImage()
    appearance.shadowColor = .clear
    self.tabBar.standardAppearance = appearance
} else {
    self.tabBar.backgroundImage = UIImage()
    self.tabBar.shadowImage = UIImage()
}
Run Code Online (Sandbox Code Playgroud)