我有一个
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)
然后标签栏可见,但不模糊。我想从这里实现接受的答案的效果透明 UITabBar 上的黑色背景但这里是 uitabbar 并且我正在使用 uitabbarcontroller...你能帮我在我的情况下应用模糊吗?
您只需将模糊视图添加为子视图即可:
self.view.addSubview(blurView)
由于您只想将选项卡栏变为蓝色,并且此类是选项卡栏控制器,因此您可以执行以下操作:
self.tabBar.addSubview(blueView)
您还需要更改框架:
blurView.frame = self.tabBar.bounds
为什么不在你的
TabBarController
上使用 barTintColor 属性?
self.tabBar.translucent = true
self.tabBar.barTintColor = UIColor.blackColor()
您甚至不需要子类化
UITabBarController
。您可以在任何 UIViewController
上拨打此电话。
self.tabBarController?.tabBar.translucent = true
self.tabBarController?.tabBar.barTintColor = UIColor.blackColor()
如果我从您发布的以下评论中理解正确,您想将
UITabBar
更改为黑色,但仍然模糊。
是的,我注意到 UITabBarController 默认情况下是模糊的,但我想用特定的样式(.Dark)使其模糊。
从 iOS 7 开始,这样做实际上变得相当容易。只需将
barStyle
的 UITabBar
更改为 .black
。将以下代码放入您的 UIViewController
的 viewDidLoad
方法中(请注意,UITabBar
默认情况下是半透明的,因此您无需再次指定)。
tabBarController?.tabBar.barStyle = .black
如果您想将其设置回常规的白色
barStyle
,请将其改回.default
。
tabBarController?.tabBar.barStyle = .default
您甚至可以在 Interface Builder 中执行此操作,方法是选择
UITabBarController
层次结构中的选项卡栏并将其 Style 更改为 Black。
我有一个解决方案,您只需按如下方式配置 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: .regular) // here you can change blur style
let blurView = UIVisualEffectView(effect: blurEffect)
blurView.frame = tabBar.bounds
blurView.autoresizingMask = .flexibleWidth
tabBar.insertSubview(blurView, at: 0)
结果: