Appleは、iOS 7のtabBarに小さな線を追加しました。この線は、tabBarとUIの間でシャドウまたはフェードとして機能するはずです。
私はカスタムメイドのタブバーを使用しているので、線は非常に刺激的です。どうやって削除しますか?それが可能であることを教えてください、そうでなければ私は私のアプリ全体を再設計する必要があります。
/よろしく
*編集
次のコード行の問題を解決しました:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
これらのコードは私にとっては非常にうまく機能します(タブバーの背景画像は実際にはありません)。
[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];
お役に立てば幸いです。
IOS 8では、インスペクターでタブバーのスタイルを黒に設定することにより、上部の境界線を削除できます。
スイフト
素敵な簡単な解決策:
カスタムタブバークラスで以下のコードを記述します。次に、水平方向のシャドウラインが非表示になります。
self.tabBar.setValue(true, forKey: "_hidesShadow")
目的C
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
self.tabBarController = [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];
このコードは私の問題も解決しました
UITabBar
APIにはそのセパレーターに影響を与えるものはありませんが、セパレーターがUITabBar(UIViewサブクラス)内にある場合、新しい1ピクセルの高さのUIViewを挿入できると思います。その上。そこに表示したい画像のスライスを取得して、新しいビューに描画する必要があります。また、UITabBarがサブビューの追加を妨げるのか、サブビューが最上位になるのを妨げるのかはわかりません。しかし、そこから始めます。
これを試してください、** 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:で設定する必要があります(デフォルトのバックグラウンドイメージを使用する場合は、デフォルトのシャドウイメージが使用されます)。
これは私のために働いた
UIImage* tabBarBackground = [UIImage new];
if(!OSVersionIsAtLeastiOS7())
{
tabBarBackground = [UIImage imageNamed:@"whitebg"];
}
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
私の場合、別の影を設定する必要もありました。最後に、カスタムシャドウの設定中に機能した唯一のことは、タブバーの上に単一ポイントの高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];
AppDelegate.m
didFinishLaunchingWithOptions:
メソッドに次のコードを追加します
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];