web-dev-qa-db-ja.com

iOS UITabBar:上部の影のグラデーション線を削除

カスタムUITabBarを実装しましたが、その上にまだこのグラデーション/影があります。追加した

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

これは背景を変更するだけですが、影のグラデーションは維持します。

私は何を間違えていますか?それを取り除くために指定するものはありますか?

私が持っているもの:

top shadow

私が欲しいもの:

without shadow

ありがとうございました。

41
httpete

UITabBarに1x1ピクセルの透明な影の画像を設定してみてください。

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

この質問 の答えも同様です...もしあなたがどんな種類の1x1の透明な画像を台無しにしたくないなら、この作品も:

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

Swiftの場合:

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

スイフト

カスタムタブバーでこれを試してください。水平の影の線を非表示にします。

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

目的C

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

Swift 4

UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
10
Alfi

画像を設定するだけで、borderWidthを0に設定する必要があるシャドウラインは削除されません。ここにコードがあります

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

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

[UITabBar外観] .clipsToBounds = true;

2
Nazim Siddiqui

[[UITabBar appearance] setShadowImage:]を呼び出すと、アプリ内のすべてのUITabBarインスタンスがカスタマイズされます。

UITTabBarを1つだけカスタマイズしたい場合、これを行うことができます:

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

実装が簡単な別の答えを次に示します。

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

私のために働いた。

2
dbv

私は次の方法で同じ外観を達成しました。
1。背景バーの色合いをメインの親ビューの背景色と同じに設定します。
2。

this.TabBar.BarStyle = UIBarStyle.BlackOpaque;

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

1
Shanu Singh

これをAppDelegatedidFinishLaunchingWithOptionsの下に配置します:

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

これを試してください、** 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()


こちらはApple shadowImage のガイドラインです。

@available(iOS 6.0, *)
open var shadowImage: UIImage?

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

1
Krunal

ViewDidloadでこれを試してください。

override func viewDidLoad() {
        super.viewDidLoad()

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

それは私のために働く

0
anhtran

ほとんどのViewControllerがviewDidLoadで継承するView ControllerまたはView ControllerまたはBasicViewControllerに、次の2行を追加します。

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

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

IOS 9.3で動作します

0
Catalin