我有UITabBar
,我想让它变得模糊。我写了以下代码:
import UIKit
class TabBarController:UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let blur = UIBlurEffect(style: UIBlurEffectStyle.Light)
let blurView = UIVisualEffectView(effect: blur)
blurView.frame = self.view.bounds
blurView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.view.layer.insertSublayer(blurView, atIndex: 0)
}
}
但不知何故最后一行抛出错误:
无法将'UIVisualEffectView'类型的值转换为预期参数 输入'CALayer'
我该如何解决?
我将最后一行改为:
self.tabBar.addSubview(blurView)
但现在整个标签栏都模糊不清(即使有图标也不可见)。当我将此行更改为:
self.tabBar.sendSubviewToBack(blurView)
然后标签栏可见,但不会模糊。我希望从这里Black background on transparent UITabBar接受答案来实现效果,但这里是uitabbar,我正在使用uitabbarcontroller ......你可以帮助我在我的情况下应用模糊吗?
答案 0 :(得分:6)
您只需将模糊视图添加为子视图:
self.view.addSubview(blurView)
由于您只想使标签栏变蓝并且此类是标签栏控制器,您可以执行以下操作:
self.tabBar.addSubview(blueView)
您还需要更改框架:
blurView.frame = self.tabBar.bounds
答案 1 :(得分:3)
如果我从您发布的以下评论中正确理解,您希望将UITabBar
更改为黑色但仍然模糊。
是的,我注意到UITabBarController在默认情况下是模糊的,但我想用特定的样式(.Dark)使其模糊。
这样做,因为iOS 7实际上变得非常简单。只需将barStyle
的{{1}}更改为UITabBar
即可。将以下代码放入.black
UIViewController
方法中(请注意,默认情况下viewDidLoad
是半透明的,因此您无需再次指定)。< / p>
UITabBar
如果您想将其重新设置为常规白色tabBarController?.tabBar.barStyle = .black
,请将其更改回barStyle
。
.default
您甚至可以在Interface Builder中通过选择tabBarController?.tabBar.barStyle = .default
层次结构中的标签栏并将其样式更改为黑色来执行此操作
答案 2 :(得分:3)
为什么不在TabBarController
使用barTintColor属性?
self.tabBar.translucent = true
self.tabBar.barTintColor = UIColor.blackColor()
您甚至不需要继承UITabBarController
。您可以在任何UIViewController
上调用此内容。
self.tabBarController?.tabBar.translucent = true
self.tabBarController?.tabBar.barTintColor = UIColor.blackColor()
答案 3 :(得分:0)
我有一个解决方案,您所需要做的就是将UITabBar配置如下:
// next code will make tabBar fully transparent
tabBar.isTranslucent = true
tabBar.backgroundImage = UIImage()
tabBar.shadowImage = UIImage() // add this if you want remove tabBar separator
tabBar.barTintColor = .clear
tabBar.backgroundColor = .black // here is your tabBar color
tabBar.layer.backgroundColor = UIColor.clear.cgColor
如果要添加模糊,请执行以下操作:
let blurEffect = UIBlurEffect(style: .dark) // here you can change blur style
let blurView = UIVisualEffectView(effect: blurEffect)
blurView.frame = tabBar.bounds
blurView.autoresizingMask = .flexibleWidth
tabBar.insertSubview(blurView, at: 0)
结果:
答案 4 :(得分:0)