2016-04-03 38 views
5

Bazı düğmelerin arka plan görüntüsünden diğerine kaybolmasına neden olup olmadığını bilmek ister misiniz? Aşağıdaki kod şu anki görüntüden background-image-1 yeni görüntüye, background-image-2 ani bir değişikliğe yol açıyor. Kabul cevap çalışır rağmen görüntü arasında hızla geçiş yaparken, ben hafif pürüzleri bulmak olduİki arka plan görüntüsü arasında kaybolmak mümkün mü?

func buttonPressed() { 
    if let image = UIImage(named: "background-image-2") { 
     UIView.animateWithDuration(2, delay: 0, options: .CurveEaseInOut, animations: {_ in 
      self.view.backgroundColor = UIColor(patternImage: image) 
     }, completion: nil) 
} 

Teşekkür

DÜZENLEME

. UIView.animateWithDuration kullanarak benzer bir yöntem bu çözer:

func buttonPressed() { 
    let oldImageView = UIImageView(image: UIImage(named: "background-image-1")) 
    oldImageView.frame = view.frame 
    let newImageView = UIImageView(image: UIImage(named:"background-image-2")) 
    newImageView.frame = view.frame 
    newImageView.alpha = 0 
    view.insertSubview(newImageView, aboveSubview: backgroundImageView) 
    view.insertSubview(oldImageView, aboveSubview: newImageView) 
    UIView.animateWithDuration(1.0, delay: 0.0, options: .CurveEaseInOut, animations: { 
     oldImageView.alpha = 0 
     newImageView.alpha = 1 
     }, completion: { completed in 
      self.backgroundImageView.image = newImage 
      newImageView.removeFromSuperview() 
      oldImageView.removeFromSuperview() 
    }) 
} 

cevap

6

imageView, animasyonunuz için kullandığınız UIImageView ürünüdür. image1 orijinal görselinizdir. image2 yeni bir görüntüdür. Bunu deneyin:

let crossFade: CABasicAnimation = CABasicAnimation(keyPath: "contents") 
crossFade.duration = 1 
crossFade.fromValue = image1.CGImage 
crossFade.toValue = image2.CGImage 
self.imageView.image = image2 
self.imageView.layer.addAnimation(crossFade, forKey: "animateContents") 

Bu yardımcı olur umarım.

+0

Öneriniz için teşekkürler. Sorunun ** EDIT ** bölümünde denedim. Ne yazık ki, bu işe yaramıyor. Herhangi bir öneri neden, lütfen? – Alex

+0

Bunun nedeni, görüntünüzün düzgün bir şekilde oluşturulmamasıdır. Görünümde yöntem görünmüşse, imageView'un merkezini görünümün merkezine ve boyutuna, görünümün boyutuna ayarlayın. – penatheboss

+0

Evet, üzgünüm. Lütfen düzenlemeleri inceleyin. – Alex

0

arka plan rengi bir canlandırılabilir özellik olması gerekiyordu, ama bir desen rengi çalışmak olmamalıdır.

Aslında bir desen rengini istiyor musunuz veya yinelenen deseni kullanmadan görüntünün arka planı olarak bir görüntü eklemek için bunu kullanıyor musunuz?

+0

Görüntüyü ve görüntünün arka planını eklemek için 'pattern color:' kullanıyorum. Amaç bu görüntüyü dışarıda bırakmak ve 'background-image-2' ile değiştirmektir. Teşekkürler – Alex

+1

En iyisi sadece onu bir alt görünüm olarak ekleyip bu şekilde canlandırıyor muyum? ör. //stackoverflow.com/questions/25026621/fade-animation-for-uiimages-in-swift – Alex

İlgili konular