然后呢,我就想著用UIVibrancyEffect做,毛玻璃嘛,然后試了一個多小時,找他的各種屬性調(diào)試,不行,
然后就想著可能需要先把文字轉(zhuǎn)成圖片,在加毛玻璃
func image(string:String,font:UIFont,height: CGFloat,width:CGFloat,textAlignment:NSTextAlignment) -> UIImage{
let str = string as NSString
let size = CGSize(width: width, height: height)//str.boundingRect(with:
UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()
UIColor.clear.set()
let rect = CGRect(x:0, y:0, width: size.width + 200, height : size.height)
context!.fill(rect)
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .left
// paragraph.firstLineHeadIndent = 0
// paragraph.headIndent = 0
// paragraph.paragraphSpacingBefore = 0
// paragraph.paragraphSpacing = 0
// paragraph.lineSpacing = 0
let attributes = [NSAttributedString.Key.foregroundColor : UIColor.black,
NSAttributedString.Key.font : font,
NSAttributedString.Key.paragraphStyle:paragraph
]
str.draw(in: rect, withAttributes: attributes)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
也不行,去百度和谷歌都找不到相應(yīng)的東西,然后為了發(fā)版本,只能先蓋一張固定的模糊過的文字圖片上去做做樣子(感謝UI妹紙的配合),先發(fā)了版本再說,于是過了幾天,我突然想到一個東西:CIFilter,他也可以做模糊的呀,于是我找了下資料
// CIGaussianBlur 高斯模糊
// CIBoxBlur 均值模糊
// CIDiscBlur 環(huán)形卷積模糊
// CIMotionBlur 運動模糊
CIFilter *filter = [CIFilter filterWithName:@"CIMotionBlur"];
運動模糊應(yīng)該就是我要的效果了
于是直接試了一下
let inputImg = self.image(string: label.text!, font: UIFont.systemFont(ofSize: 22),height:label.frame.size.height, width: label.frame.size.width, textAlignment: .left)
let input = CIImage(cgImage: inputImg.cgImage!)
let filter = CIFilter(name: "CIMotionBlur")
filter?.setValue(input, forKey: kCIInputImageKey)
filter?.setValue(NSNumber(value: 8), forKey: kCIInputRadiusKey)
let context = CIContext(options: nil)
let outputImg = filter?.outputImage
let imgRef = context.createCGImage(outputImg!, from: outputImg!.extent)
imageV.image = UIImage.init(cgImage: imgRef!)
也就是上面那個效果,不過此處有個問題,模糊圖片前面會有一段空白,這個是在文本轉(zhuǎn)圖片的時候存在的問題,我也試了修改NSMutableParagraphStyle的屬性值,也就是我所注釋掉的那部分代碼,即使加了那些也沒有辦法把文字開頭的空白去掉,只能帶改天研究如何做到文本和文字一樣等高等寬了.
如果有什么遺漏的或者知道怎么解決這個問題的小伙伴,還請不吝賜教.