UIVisualEffectView中的BlurStyle只有一种模糊度,而且半径未知。想要直接改变模糊半径还是很难做到的。
那么我们用transform来变相改变模糊半径(仍不是准确值,但至少可控)
以Swift为例
//
// ZZVisualEffectView.swift
// BlurViewTest
//
// Created by zjj on 2020/3/3.
// Copyright © 2020 zjj. All rights reserved.
//
import UIKit
class ZZVisualEffectView: UIVisualEffectView {
var blurScale: CGFloat = 1.0 {
didSet {
self.setMyBlurScale()
}
}
func setMyBlurScale() {
var scale = self.blurScale
let min: CGFloat = 0.05
let max: CGFloat = 1
if (scale < min) {
scale = min
} else if (scale > max) {
scale = max
}
let oldFrame = self.frame
self.transform = CGAffineTransform(scaleX: scale, y: scale)
self.frame = oldFrame
}
}
重点就是
let oldFrame = self.frame
self.transform = CGAffineTransform(scaleX: scale, y: scale)
self.frame = oldFrame
有个缺陷就是会影响到cornerRadius
之类的属性,最好再用一个view来装这个visualEffectView