如何使用 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
之间的任意数字
我试图在发送消息之前降低消息的质量,例如,如果连接不佳,我想模糊掉 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
之间的任意数字