【问题标题】:Blur UILabel in Swift在 Swift 中模糊 UILabel
【发布时间】:2018-08-08 07:31:59
【问题描述】:

如何模糊UILabel的文字?

UIBlurEffectView 不是模糊文本而是整个背景。

您能告诉我如何实现这一目标吗?

谢谢,

【问题讨论】:

标签: ios iphone swift uilabel uiblureffect


【解决方案1】:

因为这是一个有趣的问题,所以我查阅了 UILabel 文档。好像没有只负责文字绘制的方法,可以重写。

所以我解决问题的方法是这样的:

  1. 使用单独的背景和文本绘制方法子类化 UIView。
  2. 在文本绘制方法中,将文本绘制到离屏图像上。
  3. 然后对该图像应用模糊滤镜(Core Image 框架)。
  4. 在背景上绘制模糊图像(您的子类可能有 2 个 UIView:一个用于背面,另一个用于文本)。

所有这一切的明显缺点是这个自定义子类会错过 UILabel 的属性文本和多行分割的所有功能。

【讨论】:

    【解决方案2】:

    您可以通过使用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,但为了清晰地呈现文本,必须为其分配值 UIScreen.main.scale,对于大多数 iPhone 来说是 2.0,iPhone X 是一个值得注意的例子,其值为 3.0。值越小,文字模糊的越多。

    【讨论】:

    • 我有 UILabel,我不能使用 CATextLayer 作为自动调整单元格
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多