gpt4 book ai didi

ios - 删除 UITextView 上带有 alpha 动画的 CAGradientLayer

转载 作者:行者123 更新时间:2023-11-30 10:54:39 25 4
gpt4 key购买 nike

我在 UITextView 上有一个底部淡出渐变层。当用户到达 UIScrollView 的底部时,我将删除此淡出。但是,当用户开始滚动到顶部时,我再次设置了它。

我的问题是我想删除这个带有 alpha 动画的 CAGradientLayer 而不仅仅是直接删除它。

现在我将其删除并设置为(无动画):

func scrollViewDidScroll(_ scrollView: UIScrollView) {
updateGradientFrame()
if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height) {
self.myTextView.layer.mask = nil
}else{
myTextView.layer.mask = gradient
}}

我尝试过但不起作用:

UIView.animate(withDuration: 1) {
self.myTextView.layer.mask = nil
}

另一次尝试(这将动画添加到整个UITextView而不仅仅是图层):

let flash = CABasicAnimation(keyPath: "opacity")
flash.fromValue = 1.0
flash.toValue = 0.0
flash.duration = 3.0 // 1 second
flash.autoreverses = false // Back

gradient.add(flash, forKey: "flashAnimation")

我在社区中发现的内容(不直接指此问题):

Animating a CALayer's mask size change

Animate CALayer mask change with fade effect

最佳答案

像这样的事情怎么样?

UIView.animate(withDuration: 1, animations: {
yourLayer.opacity = 0
}, completion: {
yourLayer.removeFromSuperLayer()
})

在这里,您将不透明度设置为 1 作为持续时间,然后当它完成时,您只需将其从其 super 图层中删除即可。

关于ios - 删除 UITextView 上带有 alpha 动画的 CAGradientLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54090248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com