我在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")
我在社区中发现的内容(不直接涉及此问题):
答案 0 :(得分:0)
这样的事情怎么样?
var docsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var photosPath = Path.Combine(docsPath, "DefectPhotos/");
if(Directory.Exists(photosPath))
{
string[] photoNames = GetFileNames(photosPath, "*.jpg");
foreach (var photoName in photoNames)
{
if (photoName.Contains(_item.DefectId))
{
thumbnailPhotos.Add(new Thumbnail() { ImageUrl = photosPath + photoName });
}
}
}
在这里以1作为持续时间来设置不透明度的动画,然后当它完成时,只需将其从其上层移除即可。