簡體   English   中英

停止在UIImageView動畫上進行Alpha混合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM