提问人:nirav 提问时间:8/8/2018 更新时间:6/6/2020 访问量:4412
在 Swift 中模糊 UILabel
Blur UILabel in Swift
问:
如何模糊UILabel的文本?
UIBlurEffectView 不是模糊文本,而是模糊整个背景。
你能告诉我我怎样才能做到这一点吗?
谢谢
答:
-1赞
mag_zbc
8/8/2018
#1
您可以通过使用 而不是 来实现仅模糊文本,而不使用背景。 有一个属性,如果将其设置为低于屏幕比例的值,则将实现模糊效果CATextLayer
UILabel
CALayer
contentsScale
let view = UIView()
let textLayer = CATextLayer()
textLayer.string = "yourText"
textLayer.contentsScale = 0.5 // lower number means more blurry text
view.layer.addSublayer(textLayer)
contentsScale
默认值为 1.0,但要清晰呈现文本,必须为其赋值 ,对于大多数 iPhone 来说,该值为 2.0,iPhone X 是值得注意的例子,其值为 3.0。该值越低,模糊的文本就越多。UIScreen.main.scale
评论
0赞
nirav
8/8/2018
我有UILabel,我不能使用CATextLayer作为自动调整单元格大小
0赞
rommex
8/8/2018
#2
由于这是一个有趣的问题,我在 UILabel 文档中查找了。似乎没有一种方法只负责文本绘制,可以被覆盖。
所以我解决你的问题的方法是这样的:
- 使用单独的背景和文本绘制方法对 UIView 进行子类化。
- 在文本绘制方法中,将文本绘制到屏幕外图像。
- 然后将模糊滤镜(核心图像框架)应用于该图像。
- 在背景上绘制模糊的图像(可能您的子类可能有 2 个 UIView:一个用于背面,另一个用于文本)。
所有这一切的明显缺点是,这个自定义子类会错过 UILabel 的属性文本和多行划分的所有功能。
评论