我在一個視圖上繪制一個字串,如
string.draw(at: point withAttributes: attributes)
我想給字串添加一些影片效果,基本上是alpha值--從0到1,持續時間為1.0秒。我將如何實作它?
uj5u.com熱心網友回復:
你可以用CABasicAnimation對視圖的layer不透明度進行影片處理,即:
let view = //view rendering string
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 0
animation.toValue = 1
animation.duration = 1
//>添加影片
view.layer.add(animation, key: "opacity")
//提交最終的不透明度值,該值將在影片完成后使用。
view.layer.opacity = 1。
你可能還想使用CATextLayer而不是在UIView.draw中渲染字串。在這種情況下,你將對文本層的opacity進行影片處理。
let view = // view rendering string
let textLayer = CATextLayer()
textLayer.string = "my text"。
textLayer.frame = view.layer.bounds
view.layer.addSublayer(textLayer)
uj5u.com熱心網友回復:
對你的要求的另一種理解:
打字機效果的文本影片
<一個一個的字符,
所示的字符,阿爾法1
。
要顯示的字符,alpha 0
要顯示的字符,alpha 0
。
extension UILabel{
func setTyping(text content: String, duration: TimeInterval = 5.0) {
文本 = ""
let dalay = duration / TimeInterval(content.count)
let writingTask = DispatchWorkItem { [weak self ] in
guard let `self` = self else {return }
content.forEach { char in
DispatchQueue.main.async {
self.text?.append(char)
}
Thread.sleep(forTimeInterval: dalay)
}
}
let queue: DispatchQueue = .init(標簽:"typepeed",qos:.userInteractive
queue.asyncAfter(deadline: .now() 0.05, execute: writingTask)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324473.html
標籤:
