UIVisualEffectView中的BlurStyle只有一種模糊度,而且半徑未知。想要直接改變模糊半徑還是很難做到的。
那么我們用transform來變相改變模糊半徑(仍不是準(zhǔn)確值,但至少可控)

Simulator Screen Shot - iPhone 8 - 2020-03-03 at 19.38.00.png

Simulator Screen Shot - iPhone 8 - 2020-03-03 at 19.38.05.png

Simulator Screen Shot - iPhone 8 - 2020-03-03 at 19.38.07.png
以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
}
}
重點(diǎn)就是
let oldFrame = self.frame
self.transform = CGAffineTransform(scaleX: scale, y: scale)
self.frame = oldFrame
有個(gè)缺陷就是會(huì)影響到cornerRadius之類的屬性,最好再用一個(gè)view來裝這個(gè)visualEffectView