web-dev-qa-db-ja.com

iOS 7 tabBar-line、それを削除する方法は?

Appleは、iOS 7のtabBarに小さな線を追加しました。この線は、tabBarとUIの間でシャドウまたはフェードとして機能するはずです。

enter image description here

私はカスタムメイドのタブバーを使用しているので、線は非常に刺激的です。どうやって削除しますか?それが可能であることを教えてください、そうでなければ私は私のアプリ全体を再設計する必要があります。

/よろしく

*編集

次のコード行の問題を解決しました:

[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
43
user1293618
    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
    [[UITabBar appearance] setShadowImage:tabBarBackground];
    [[UITabBar appearance] setBackgroundImage:tabBarBackground];   
22
liancheng.jiang

これらのコードは私にとっては非常にうまく機能します(タブバーの背景画像は実際にはありません)。

[tab_main.tabBar setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

そして、これらのコードを使用してフレームも追加します。

UIColor* color_green = UIColorFromRGB(0x348e5b);
tab_main.tabBar.layer.borderWidth = 0.50;
tab_main.tabBar.layer.borderColor = color_green.CGColor;
[[UITabBar appearance] setTintColor:color_green];

お役に立てば幸いです。

14
superarts.org

IOS 8では、インスペクターでタブバーのスタイルを黒に設定することにより、上部の境界線を削除できます。

7
Artjom Zabelin

スイフト

素敵な簡単な解決策:

カスタムタブバークラスで以下のコードを記述します。次に、水平方向のシャドウラインが非表示になります。

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

目的C

[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
5
Sourabh Sharma
self.tabBarController =  [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
1
dineshthamburu
 [_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];

このコードは私の問題も解決しました

0
Daxesh Nagar

UITabBar AP​​Iにはそのセパレーターに影響を与えるものはありませんが、セパレーターがUITabBar(UIViewサブクラス)内にある場合、新しい1ピクセルの高さのUIViewを挿入できると思います。その上。そこに表示したい画像のスライスを取得して、新しいビューに描画する必要があります。また、UITabBarがサブビューの追加を妨げるのか、サブビューが最上位になるのを妨げるのかはわかりません。しかし、そこから始めます。

0
bneely

これを試してください、** 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:で設定する必要があります(デフォルトのバックグラウンドイメージを使用する場合は、デフォルトのシャドウイメージが使用されます)。

0
Krunal

これは私のために働いた

UIImage* tabBarBackground = [UIImage new];
if(!OSVersionIsAtLeastiOS7())
{
    tabBarBackground = [UIImage imageNamed:@"whitebg"];
}
[[UITabBar appearance] setShadowImage:tabBarBackground];

[[UITabBar appearance] setBackgroundImage:tabBarBackground];
0
Zoeb S

私の場合、別の影を設定する必要もありました。最後に、カスタムシャドウの設定中に機能した唯一のことは、タブバーの上に単一ポイントの高UIView 1ポイントを追加することでした。

    UIView *whiteLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, -1.0, self.tabBar.frame.size.width, 1.0)];
    whiteLine.backgroundColor = [UIColor whiteColor];
    [self.tabBar addSubview:whiteLine];
0
Jeroen

AppDelegate.mdidFinishLaunchingWithOptions:メソッドに次のコードを追加します

if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
0
Teja Kumar B