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")

Objective 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

このコードはiOS13以下の両方で機能します

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

1つだけをカスタマイズする場合はUITTabBar、次のように実行できます。

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

実装が簡単なもう1つの答えは次のとおりです。

[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?

デフォルトはnilです。nil以外の場合、デフォルトのシャドウイメージの代わりに表示するカスタムシャドウイメージ。カスタムシャドウを表示するには、カスタム背景画像も-setBackgroundImage:で設定する必要があります(デフォルトの背景画像を使用する場合は、デフォルトのシャドウ画像が使用されます)。

于 2017-09-08T13:10:10.313 に答える
1

以下の方法で同じ見た目を実現しました。
1.背景バーの色合いの色をメインの親ビューの背景色と同じに設定します。
2.2。

this.TabBar.BarStyle = UIBarStyle.BlackOpaque;

Xamarinで使用しました。Swift構文を確認してください。

于 2019-04-23T07:11:40.150 に答える
1

カスタムフォントのタブバーからiOS13のシャドウラインを削除する必要がある場合は、次のように適用する必要があります。

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 に答える
0

ほとんどのビューコントローラがviewDidLoadで継承するビューコントローラまたはビューコントローラまたはBasicViewControllerに、次の2行を配置するだけです。

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

下部のバーの高さが50pxであるため、transparent_shadow @ 2x.pngが1x1または2x2の透明な画像であり、tab_bar_background@2x.pngが640x100の画像であることを確認してください。

iOS9.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 に答える