我一直在尝试使用xcode 6(swift语言)中的UIImageView来实现模糊效果,我正在尝试实现它,因此ImageView下面的所有内容都会变得模糊。
我无法让它发挥作用,所以我请求堆栈溢出的人帮助我。
怎么办?
我到目前为止写的代码是:
class blurImage: UIImageView {
init(frame: CGRect) {
super.init(frame: frame)
var blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var effectView:UIVisualEffectView = UIVisualEffectView (effect: blur)
}
}
答案 0 :(得分:9)
您需要指定一个框架来实现模糊视图并将其添加为子视图
class blurImage:UIImageView {
init(frame: CGRect) { super.init(frame: frame) var blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) var effectView:UIVisualEffectView = UIVisualEffectView (effect: blur) effectView.frame = frame addSubview(effectView) } }
答案 1 :(得分:2)
我修改了@Kuroros类以使用Storyboards
class BlurImage: UIImageView {
override func awakeFromNib() {
super.awakeFromNib()
}
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
let blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var effectView:UIVisualEffectView = UIVisualEffectView (effect: blur)
effectView.frame = frame
addSubview(effectView)
}
}
答案 2 :(得分:0)
我修改了@fabian实现,因为如果使用自动布局,frame
大小计算存在问题。当您尝试阅读frame
中的init()
数据时,它尚未正确计算并且对我来说有大小(1000,1000),而应该是(420,420)。所以你需要阅读并稍后设置。我使用了layoutSubviews
。设置frame = frame
也无效,因为它返回绝对容器位置,但我们需要框大小。
class BluredImage: UIImageView {
var effectView:UIVisualEffectView!
required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)!
let blur:UIBlurEffect = UIBlurEffect(style: .light)
effectView = UIVisualEffectView (effect: blur)
addSubview(effectView)
}
override func layoutSubviews() {
super.layoutSubviews()
effectView.frame = bounds
}
}