2016-04-03 3 views
5

मैं जानना चाहता हूं कि कुछ बटन के लिए एक पृष्ठभूमि छवि से दूसरे में फीका होना संभव है या नहीं? निम्नलिखित छवि के परिणामस्वरूप वर्तमान छवि, background-image-1, नई छवि, background-image-2 से अचानक परिवर्तन में परिणाम आया है।क्या दो दृश्य पृष्ठभूमि छवियों के बीच फीका होना संभव है?

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) 
} 

धन्यवाद

संपादित

हालांकि स्वीकार किए जाते हैं जवाब काम करता है, मैं मामूली खामियों खोजने गया था जब छवियों के बीच जल्दी से टॉगल। ऐसा ही एक विधि UIView.animateWithDuration का उपयोग कर इस को हल करती है:

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() 
    }) 
} 

उत्तर

6

कहें imageView UIImageView है जो आप अपने एनीमेशन के लिए उपयोग कर रहे हैं। image1 आपकी मूल छवि है। image2 नई छवि है। इसे आज़माएं:

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") 

आशा है कि इससे मदद मिलती है।

+0

आपके सुझाव के लिए धन्यवाद। मैंने प्रश्न के अपने ** EDIT ** अनुभाग में इसका प्रयास किया। दुर्भाग्य से, यह काम नहीं करता है। कोई सुझाव क्यों, कृपया? – Alex

+0

ऐसा इसलिए है क्योंकि आपकी छवि दृश्य ठीक से नहीं बनाया गया था। दृश्य में विधि दिखाई दी, छवि दृश्य केंद्र को दृश्य के केंद्र में सेट करें और इसका आकार दृश्य के आकार में सेट करें। – penatheboss

+0

हाँ ने देखा कि, क्षमा करें। कृपया संपादन देखें। – Alex

0

पृष्ठभूमि रंग एक animatable संपत्ति माना जाता है, लेकिन एक पैटर्न रंग काम नहीं करना चाहिए।

क्या आप वास्तव में एक पैटर्न रंग चाहते हैं, या आप दोहराने वाले पैटर्न का उपयोग किये बिना दृश्य की पृष्ठभूमि के रूप में छवि डालने के लिए इसका उपयोग कर रहे हैं?

+0

मैं एक छवि और दृश्य की पृष्ठभूमि डालने के लिए 'पैटर्न रंग:' का उपयोग कर रहा हूं। इसका उद्देश्य इस छवि को फीका और इसे 'पृष्ठभूमि-छवि -2' के साथ प्रतिस्थापित करना है। धन्यवाद – Alex

+1

क्या मैं बस इसे सबव्यूव के रूप में डालने और इसे इस तरह एनिमेट करने में सबसे अच्छा हूं? उदाहरण के लिए: //stackoverflow.com/questions/25026621/fade-animation-for-uiimages-in-swift – Alex

संबंधित मुद्दे