UITabBar边界和阴影问题

时间:2018-03-28 07:51:18

标签: ios swift uitabbar

我需要在UITabBar中添加阴影效果,我可以通过以下代码获得:

tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 4.0
tabBar.layer.shadowColor = UIColor.gray.cgColor
tabBar.layer.shadowOpacity = 0.6

enter image description here

它运作良好。

但是,我需要移除UITabBar顶部的边框,并通过搜索得到self.tabBar.clipsToBounds = true,通过放置该代码,它会删除边框,但它也会删除阴影效果。< / p>

enter image description here

我需要关注以下图片:

enter image description here

没有边框,但有阴影效果。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:6)

您需要在TabBar中添加UIView,并使.shadowImage.backgroundImage等于UIImage()

<强>代码

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    if let tabBarController = self.window?.rootViewController as? UITabBarController {

        let tabGradientView = UIView(frame: tabBarController.tabBar.bounds)
        tabGradientView.backgroundColor = UIColor.white
        tabGradientView.translatesAutoresizingMaskIntoConstraints = false;


        tabBarController.tabBar.addSubview(tabGradientView)
        tabBarController.tabBar.sendSubview(toBack: tabGradientView)
        tabGradientView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

        tabGradientView.layer.shadowOffset = CGSize(width: 0, height: 0)
        tabGradientView.layer.shadowRadius = 4.0
        tabGradientView.layer.shadowColor = UIColor.gray.cgColor
        tabGradientView.layer.shadowOpacity = 0.6
        tabBarController.tabBar.clipsToBounds = false
        tabBarController.tabBar.backgroundImage = UIImage()
        tabBarController.tabBar.shadowImage = UIImage()
    }
    // Override point for customization after application launch.
    return true
}

<强>结果

enter image description here

答案 1 :(得分:0)

因此@Reinier Melian提供的答案对我不起作用,但是我制作了一个自定义TabBar控制器,这种效果有效:

代码:

APIs

使用方法:

要使用它,请将标签栏控制器拖到情节提要上,然后通过下拉菜单将该标签栏的类更改为该类。

答案 2 :(得分:0)

在iOS 12.1和Swift 4.2上进行了测试

UITabBar文件中添加的.storyboard/.xib视图需要(在Document Outline中位置)要比要滚动的内容要低(在我的情况下,Web Report Container是滚动部分,Tab Bar是底部的UITabBar。我将其放在“文档大纲”中的下方,您可以在此处看到较低的z-index:

enter image description here

然后在ViewController.swift文件中,您可以在viewDidLoad中进行如下设置:

// Remove default line
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
tabBar.backgroundColor = UIColor.white

// Add only shadow 
tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 8
tabBar.layer.shadowColor = UIColor.black.cgColor
tabBar.layer.shadowOpacity = 0.2

您可以使用shadowOpacityshadowRadius来将阴影视觉效果调整到所需的效果。