如何使用 Swift 降低 UITextView 中文本的质量

How to reduce the quality of the text inside UITextView with Swift

我试图在发送消息之前降低消息的质量,例如,如果连接不佳,我想模糊掉 UITextView 中的文本,如果连接改善或互联网恢复正常, 然后移除模糊并在 UITextView 中显示正常文本。我试过使用 CATextLayer 不起作用。有什么办法可以实现吗?

cell.messageTextView.text = theText

let textLayer = CATextLayer()
textLayer.string = cell.messageTextView.text
textLayer.contentsScale = 0.2
cell.messageTextView.layer.addSublayer(textLayer)

您可以尝试这样的操作:

let blurEffect = UIBlurEffect(style: .systemUltraThinMaterial)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = cell.view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
cell.view.addSubview(blurEffectView)

在 table 视图单元格的顶部添加具有模糊效果的 UIVisualEffectView。

您可以通过栅格化图层并缩小其比例来降低图层的质量:

let badQualityRatio: CGFloat = 4
textView.layer.shouldRasterize = true
textView.layer.rasterizationScale = UIScreen.main.scale/badQualityRatio

结果:

您可以设置 rasterizationScale 0 到 UIScreen.main.scale 之间的任意数字