Ios 在UIImageView动画上停止Alpha混合

Ios 在UIImageView动画上停止Alpha混合,ios,animation,uiimageview,uiimage,Ios,Animation,Uiimageview,Uiimage,我有一系列的PNG文件作为UIImages数组加载,并希望为它们设置动画。这个想法是PNG有一些不透明度,我想通过透明通道显示背景动画。当我将UIImageView alpha设置为0(以显示背景)时,默认行为是UIImageView将其背景的alpha与UIImage相乘,因此现在我将动画的实体部分设置为具有一定透明度,当然有办法改变这种alpha混合行为,如果不是的话,这是苹果公司的一个重大疏忽。当然动画的基础是在背景上分层运动图像 var images : [UIImage] = [UII

我有一系列的PNG文件作为UIImages数组加载,并希望为它们设置动画。这个想法是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     
var-images:[UIImage]=[UIImage]()
变量i=0
对于i=0;i<32;i+=1{
让image=UIImage(名为:“boost_ \(i)”)
图像。附加(图像!)
}
imageView.alpha=0
imageView.animationImages=图像
imageView.animationDuration=1
imageView.animationRepeatCount=1
imageView.startAnimating


图像/动画的黄色部分应该是实心的

您可以使用如下内容:

            let transition = CATransition()

            transition.duration = 0.5
            transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
            transition.type = kCATransitionFade

            self.imageView.layer.addAnimation(transition, forKey: nil)
更新(多个图像动画):

此代码非常有效:

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
}

您可以使用以下内容:

            let transition = CATransition()

            transition.duration = 0.5
            transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
            transition.type = kCATransitionFade

            self.imageView.layer.addAnimation(transition, forKey: nil)
更新(多个图像动画):

此代码非常有效:

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
}

您不需要将UIImageView上的alpha设置为0。只需将图像视图的背景设置为透明即可

imageView.backgroundColor = UIColor. clearColor()
imageView.opaque = NO

您不需要将UIImageView上的alpha设置为0。只需将图像视图的背景设置为透明即可

imageView.backgroundColor = UIColor. clearColor()
imageView.opaque = NO

所以问题根本不是imageView,而是我在imageView下面(在viewController的顶部)有一个UIView,它有一个alpha值,并且以某种方式传递给它的SuperView。我使用的不是alpha,而是:

UIView.backgroundColor = UIColor(white: 0, alpha 0.85) 

它似乎解决了问题。

所以问题根本不是imageView,而是我在imageView下面(在viewController的顶部)有一个UIView,它有一个alpha值,并且以某种方式传递给它的SuperView。我使用的不是alpha,而是:

UIView.backgroundColor = UIColor(white: 0, alpha 0.85) 

它似乎解决了问题。

似乎不起作用,我应该在代码片段中的什么位置包含图像数组?您希望如何设置图像的动画?在计时器或滚动?计时器中,我有31个图像,用于1秒的动画似乎不起作用,我应该在代码段中的何处包含图像数组?您希望如何设置图像的动画?在计时器或滚动计时器中,我有31个图像,用于1秒的动画,直到不幸遇到同样的问题