从TabBar中删除第一行

时间:2016-10-04 11:11:44

标签: ios ios10 tabbar

在iOS 10上,此代码无法删除tabBar阴影线:

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

有人知道,我该怎么做才能删除它?

使用这两行在iOS 9.3上删除该行,但iOS 10忽略setShadowImage命令。

15 个答案:

答案 0 :(得分:27)

试着低估 iOS 10 的代码: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"fondoTabBar"]];
    [UITabBar appearance].layer.borderWidth = 0.0f;
    [UITabBar appearance].clipsToBounds = true;
    return YES;
}

Swift 3.x

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

答案 1 :(得分:18)

只有2行删除了背线

<svg width="76" height="76">
  <defs>
    <mask id="myMask">
      <rect fill="#fff" rx="15" ry="15" width="76" height="76"/>
    </mask>
  </defs>
  <rect id="border" mask="url(#myMask)" fill="#000" x="0" y="0" width="76" height="76" />
  <rect id="image" mask="url(#myMask)" fill="#fff" x="1" y="1" width="74" height="74" />
</svg>

答案 2 :(得分:8)

对于iOS 13

if (@available(iOS 13.0, *)) {
    UITabBarAppearance *appearance = [self.tabBarController.tabBar.standardAppearance copy];
    appearance.shadowImage = nil;
    appearance.shadowColor = nil;
    self.tabBarController.tabBar.standardAppearance = appearance;
}

答案 3 :(得分:4)

从iOS 13.3开始运行的解决方案

// remove top line
if #available(iOS 13.0, *) {
    // ios 13.0 and above
    let appearance = tabBar.standardAppearance
    appearance.shadowImage = nil
    appearance.shadowColor = nil
    appearance.backgroundEffect = nil
    // need to set background because it is black in standardAppearance
    appearance.backgroundColor = .someColor
    tabBar.standardAppearance = appearance
} else {
    // below ios 13.0
    let image = UIImage()
    tabBar.shadowImage = image
    tabBar.backgroundImage = image
    // background
    tabBar.backgroundColor = .someColor
}

答案 4 :(得分:1)

这对我有效@ iso13:

AppDelegate.swift

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().shadowImage = nil

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderWidth = 0

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderColor = UIColor.clear.cgColor

答案 5 :(得分:0)

对于iOS 10,将tabbar样式更改为黑色就行了

self.tabBarController.tabBar.shadowImage = UIImage()
self.tabBarController.tabBar.barStyle = .Black

答案 6 :(得分:0)

我在ios 10中遇到了同样的问题。我修改了这个问题只是改变了UITabBar的高度(默认为49)。检查here如何更改高度。

答案 7 :(得分:0)

您应该同时实施以下两种方法:

[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];

答案 8 :(得分:0)

在iOS 12.1上测试

override func viewDidLoad() {
    // Remove default border line
    tabBar.shadowImage = UIImage()
    tabBar.backgroundImage = UIImage()
    tabBar.backgroundColor = UIColor.white
}

答案 9 :(得分:0)

我没有发表评论的声誉,但是要添加到gnoix的答案中,我有一个略有不同的问题,就是我希望阴影清晰可见,因此我在Swift

if #available(iOS 13.0, *) {
    let appearance = tabBar.standardAppearance.copy()
    appearance.configureWithTransparentBackground()
    tabBar.standardAppearance = appearance
} else {
    tabBar.backgroundColor = UIColor.clear
    let image = UIImage(ciImage: CIImage(color: CIColor.clear)).af_imageAspectScaled(toFit: tabBar.bounds.size)
    tabBar.backgroundImage = image
    tabBar.shadowImage = image
}

答案 10 :(得分:0)

您可以在FirstViewController.swift中以这种方式进行操作:
Swift 4.2

self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clear.cgColor
self.tabBarController?.tabBar.clipsToBounds = true

只需更改边框颜色即可。

答案 11 :(得分:0)

对于我来说,带有tabBar外观的解决方案不起作用,因为在这种情况下它忽略了我的sed -r 's/([^\s]+?.*)=((.*(?=,$))+|.*).*/"$1":"$2",/g' *20200502*

最适合我的是tabBar.itemPositioning = .centered

别忘了设置tabBar.barStyle = .black或您喜欢的其他任何颜色。

答案 12 :(得分:0)

如果您使用情节提要,那就是 在标签栏控制器上,选择“标签栏”

Like in this image

,然后添加一个运行时属性“ clipsToBounds” bool:

like in this image

答案 13 :(得分:-1)

如果您创建自己的UITabBarController子类,则可以设置  像viewDidLoad这样的值

Swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        self.tabBar.layer.borderWidth = 0
        self.tabBar.clipsToBounds = true
}

答案 14 :(得分:-1)

这是tabbar的阴影图像(属性)。请尝试以下解决方案并查看。

试试这个, **目标-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()


以下是shadowImage的Apple指南。

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

默认为零。当非零时,显示自定义阴影图像而不是   默认阴影图像。要显示自定义阴影,请自定义   必须使用-setBackgroundImage设置背景图像:(如果是   使用默认背景图像,默认阴影图像将是   使用)。