43

我实现了一个自定义的 UITabBar,我仍然在它上面有这个渐变/阴影。我添加了

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

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

我究竟做错了什么 ?有什么可以指定摆脱它吗?

我有的 :

顶阴影

我想要的是 :

没有影子

谢谢你。

4

15 回答 15

124

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

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

迅速:

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
于 2013-05-02T09:28:40.057 回答
40

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

[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
于 2013-01-17T02:48:36.653 回答
16

迅速

为您的自定义标签栏试试这个。它将隐藏水平阴影线。

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

目标 C

[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
于 2015-10-27T11:19:58.200 回答
16

斯威夫特 4

UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
于 2018-03-31T06:38:45.820 回答
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()
}
于 2019-09-23T11:11:41.340 回答
2

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

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

[self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]];
于 2013-08-24T15:01:40.670 回答
2

这是另一个易于实施的答案:

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

为我工作。

于 2015-06-22T19:00:52.357 回答
2

只是设置图像它不会删除你必须将它的borderWidth设置为0的阴影线。这是代码

[[UITabBar 外观] setShadowImage:[UIImage new]];

[UITabBar 外观].layer.borderWidth = 0.0f;

[UITabBar 外观].clipsToBounds = true;

于 2018-05-23T12:28:11.230 回答
1

将其放在您的AppDelegate中的didFinishLaunchingWithOptions下:

[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
于 2016-02-25T11:12:06.317 回答
1

试试这个,** 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-09-08T13:10:10.313 回答
1

如果您需要从具有自定义字体的标签栏中删除 iOS 13 上的阴影线,则必须以这种方式应用它:

if #available(iOS 13.0, *) {
   let appearance = UITabBarAppearance()
   appearance.stackedLayoutAppearance.normal.titleTextAttributes = ...
   appearance.stackedLayoutAppearance.selected.titleTextAttributes = ...
   appearance.shadowColor = .clear
   tabBar.standardAppearance = appearance
 }

于 2019-11-28T08:51:22.693 回答
1

我通过以下方法实现了相同的外观。
1. 将背景栏色调设置为与主父视图背景颜色相同。
2.

this.TabBar.BarStyle = UIBarStyle.BlackOpaque;

我在 Xamarin 中使用它,请验证 Swift 语法。

于 2019-04-23T07:11:40.150 回答
0

在大多数视图控制器在 viewDidLoad 中继承的视图控制器或视图控制器或 BasicViewController 中,只需放置以下两行:

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

确保 transparent_shadow@2x.png 是 1x1 或 2x2 透明的图像,而 tab_bar_background@2x.png 是 640x100 的图像,因为底栏的高度为 50px。

适用于 iOS 9.3

于 2016-04-01T14:57:50.333 回答
0

在 viewDidload 上试试这个。

override func viewDidLoad() {
        super.viewDidLoad()

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

它对我有用

于 2016-08-31T08:44:52.303 回答
-1

在 iOS 7 - 这有效:

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

希望对某人有所帮助。

于 2013-11-20T17:00:22.580 回答