[英]stop Alpha blending on UIImageView animation
我有一系列作為UIImages數組加載的PNG文件,並希望對其進行動畫處理。 這個想法是PNG有點不透明,我想通過透明通道為它們設置背景動畫。 當我將UIImageView alpha設置為0(以顯示背景)時,默認行為是UIImageView將其背景的alpha與UIImage相乘,因此現在我獲得了具有一定透明度的動畫的堅實部分,肯定有一個改變這種alpha混合行為的方法,即使不是蘋果方面的一項重大監督。 當然,動畫的基礎是在背景上疊加運動圖像嗎?
var images : [UIImage] = [UIImage]()
var i = 0
for i = 0; i < 32; i += 1 {
let image = UIImage(named: "boost_\(i)")
images.append(image!)
}
imageView.alpha = 0
imageView.animationImages = images
imageView.animationDuration = 1
imageView.animationRepeatCount = 1
imageView.startAnimating
圖像/動畫的黃色部分應穩定
您無需將UIImageView上的alpha設置為0。只需使圖像視圖的背景透明即可。
imageView.backgroundColor = UIColor. clearColor()
imageView.opaque = NO
所以問題根本就不是imageView,而是我在imageView下方(在viewController頂部)有一個具有alpha值的UIView,並且以某種方式將其傳遞給其superviews。 我使用的不是alpha,而是:
UIView.backgroundColor = UIColor(white: 0, alpha 0.85)
它似乎解決了問題。
您可以使用如下形式:
let transition = CATransition()
transition.duration = 0.5
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
transition.type = kCATransitionFade
self.imageView.layer.addAnimation(transition, forKey: nil)
UPDATE(多張圖片動畫):
這段代碼可以完美地工作:
let timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: #selector(changeImages), userInfo: nil, repeats: true)
timer.fire()
func changeImages() {
if currentIndex == 4 {
currentIndex = 0
}
let image = arrayImages[currentIndex]
imageView.image = UIImage(named: image)
let transition = CATransition()
transition.duration = 1
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
transition.type = kCATransitionFade
imageView.layer.addAnimation(transition, forKey: nil)
currentIndex += 1
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.