カスタムUITabBarを実装しましたが、その上にこのグラデーション/シャドウがまだあります。追加した
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"navBarBottom.png"]];
これは背景を変更するだけですが、影のグラデーションを維持します。
私は何を間違っているのですか?それを取り除くために指定するものはありますか?
私が持っているもの:
私が欲しいもの:
ありがとうございました。
カスタムUITabBarを実装しましたが、その上にこのグラデーション/シャドウがまだあります。追加した
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"navBarBottom.png"]];
これは背景を変更するだけですが、影のグラデーションを維持します。
私は何を間違っているのですか?それを取り除くために指定するものはありますか?
私が持っているもの:
私が欲しいもの:
ありがとうございました。
この質問への回答も同様です...1x1の透明な画像をいじりたくない場合は、この作業も同様です。
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
迅速に:
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
UITabBarに1x1ピクセルの透明な影の画像を設定してみてください。
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
迅速
カスタムタブバーにこれを試してください。水平方向の影の線を非表示にします。
self.tabBar.setValue(true, forKey: "_hidesShadow")
Objective C
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
スウィフト4
UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
このコードは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()
}
呼び出すと、アプリ内のすべてのインスタンス[[UITabBar appearance] setShadowImage:]
がカスタマイズされます。UITabBar
1つだけをカスタマイズする場合はUITTabBar
、次のように実行できます。
[self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]];
実装が簡単なもう1つの答えは次のとおりです。
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
私のために働いた。
画像を設定するだけでは、borderWidthを0に設定する必要があるシャドウラインは削除されません。コードは次のとおりです。
[[UITabBarの外観]setShadowImage:[UIImage new]];
[UITabBarの外観].layer.borderWidth= 0.0f;
[UITabBarの外観].clipsToBounds= true;
これをAppDelegateのdidFinishLaunchingWithOptionsの下に配置します。
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
これを試してください、** 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:で設定する必要があります(デフォルトの背景画像を使用する場合は、デフォルトのシャドウ画像が使用されます)。
以下の方法で同じ見た目を実現しました。
1.背景バーの色合いの色をメインの親ビューの背景色と同じに設定します。
2.2。
this.TabBar.BarStyle = UIBarStyle.BlackOpaque;
Xamarinで使用しました。Swift構文を確認してください。
カスタムフォントのタブバーからiOS13のシャドウラインを削除する必要がある場合は、次のように適用する必要があります。
if #available(iOS 13.0, *) {
let appearance = UITabBarAppearance()
appearance.stackedLayoutAppearance.normal.titleTextAttributes = ...
appearance.stackedLayoutAppearance.selected.titleTextAttributes = ...
appearance.shadowColor = .clear
tabBar.standardAppearance = appearance
}
ほとんどのビューコントローラが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で動作します
viewDidloadでこれを試してください。
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.setValue(true, forKey: "_hidesShadow")
}
それは私のために働く
iOS 7の場合-これは機能します:
[self.actionToolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny];
[self.actionToolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
それが誰かを助けることを願っています。