दिलचस्प पोस्ट
MySQL डुप्लिकेट डालने पर ऑटो वेतन वृद्धि को रोकें उल तत्व कभी पी तत्व का बच्चा नहीं हो सकता है अपाचे कॉमन्स बराबर / हैशोड बिल्डर मुद्रित फ्लोट को दशमलव अंकों के साथ 0 के पीछे वाले स्थान पर (यू) Int8 / 16/32/64 प्रकारों के लिए फाउंडेशन (एनएसएनम्बर) को स्फ़ियेटर्स स्वचालित न्यूमेरिक वैल्यू ब्रिजिंग की प्रतिलिपि बनाना संभव है? क्या हर कोर डेटा संबंध में व्युत्क्रम होना चाहिए? कस्टम टेक्स्टव्यू कैसे बनाएं? सभी वादों के बाद jQuery के डिफरेड के जरिए लूपिंग को बुलाया गया है कैसे (बिटमैप छवि) को स्टोर करने और Android में SQLite डेटाबेस से छवि को पुनर्प्राप्त करें? ग्रिड लेआऊट के शीर्ष पर फ्लो लेआउट काम नहीं कर रहा है कैसे विंडोज प्रदर्शन सेटिंग्स प्राप्त करने के लिए? IPhone में तालिका व्यू सेपरेटर कैसे अनुकूलित करें समग्र कुंजी हाइबरनेट करें एएलएस का प्रयोग करते समय स्पार्क एक स्टैक ओव्हरफ्लो त्रुटि प्रदान करता है पार की गई पूर्णांक का चयन करें, यदि स्ट्रिंग int के बराबर था

कैसे कोर एनिमेशन का उपयोग कर iPhone पर 2 छवियों के बीच पारगमन करने के लिए

मैं यह जानने के लिए कर रहा हूं कि iPhone पर कोर एनीमेशन एनिमेटेबल गुणों के साथ कैसे काम किया जाए (यह जानने के लिए नहीं कि छवियों को कैसे पार करना है)।

एसओ पर इसी तरह के प्रश्नों को पढ़ना मुझे यह मानना ​​है कि यह यूटीएमएज वीय की परत की सामग्री को एनिमेट करने के द्वारा किया जा सकता है।

UIImage *image1 = [UIImage imageNamed:@"someImage1.png"]; UIImage *image2 = [UIImage imageNamed:@"someImage2.png"]; self.imageView.image = image1; [self.view addSubview:self.imageView]; CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"]; crossFade.duration = 5.0; self.imageView.layer.contents = image2; [self.imageView.layer addAnimation:crossFade forKey:@"animateContents"]; 

क्या मुझे विस्तार से गलत बताया गया है या क्या यह संभव नहीं है

अद्यतन: उपरोक्त कोड रिक्त UIImageView का उत्पादन करता है। जब मैं यह रेखा बदलता हूं:

 self.imageView.layer.contents = image2.CGImage; 

… मैं अब इमेज देख सकता हूं लेकिन यह फीका नहीं करता, यह सिर्फ तुरन्त दिखता है।

Solutions Collecting From Web of "कैसे कोर एनिमेशन का उपयोग कर iPhone पर 2 छवियों के बीच पारगमन करने के लिए"

आप लगभग वहां थे

 CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"]; crossFade.duration = 5.0; crossFade.fromValue = image1.CGImage; crossFade.toValue = image2.CGImage; [self.imageView.layer addAnimation:crossFade forKey:@"animateContents"]; 

ध्यान दें कि एनीमेशन UIImageView की वास्तविक मानों / सामग्रियों से स्वतंत्र है। इसलिए आपको इसकी आवश्यकता होगी

 self.imageView.image = image2; 

… अपनी छवि के लिए अंतिम परिणाम सेट करने के लिए

मुझे यह कहीं मिला – यह महान काम करता है

 UIImage * toImage = [UIImage imageNamed:@"image.png"]; [UIView transitionWithView:self.view duration:0.33f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ self.imageview.image = toImage; } completion:NULL]; 
 extension UIImageView { func mySetImage(image:UIImage) { guard let currentImage = self.image where currentImage != image else { return } let animation = CATransition() animation.duration = 0.3 animation.type = kCATransitionFade layer.addAnimation(animation, forKey: "ImageFade") self.image = image } } 
 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.navigationController.navigationBarHidden=false; UIImage *img=[UIImage imageNamed:@"images.jpeg"]; imgview=[[UIImageView alloc]init]; imgview.frame=CGRectMake(30,90, img.size.width, img.size.height); [self.view addSubview:imgview]; [self animateImages]; } - (void)animateImages { static int count = 0; NSArray *animationImages = @[[UIImage imageNamed:@"images.jpeg"], [UIImage imageNamed:@"images (1).jpeg"]]; UIImage *image = [animationImages objectAtIndex:(count % [animationImages count])]; [UIView transitionWithView:imgview duration:2.0f // animation duration options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ imgview.image = image; } completion:^(BOOL finished) { [self animateImages]; count++; }]; 

}

तेज में समाधान

 let image1:UIImage = UIImage(named: "someImage1")!; let image2:UIImage = UIImage(named: "someImage2")!; let crossFade:CABasicAnimation = CABasicAnimation(keyPath: "contents"); crossFade.duration = 5.0; crossFade.fromValue = image1.CGImage; crossFade.toValue = image2.CGImage; imageView.layer.addAnimation(crossFade, forKey:"animateContents"); 

मेरा सुझाव सिर्फ एक दूसरे के ऊपर दो UIImageView s का उपयोग करना होगा शीर्ष पर एक में छवि 1 है, और नीचे पर छवि 2 है:

 - (void) crossfade { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.5]; imageView1.alpha = !imageView1.alpha; [UIView commitAnimations]; } 

जब भी आप इसे कहते हैं, तब दोनों छवियों के बीच यह फीका हो जाएगा। यदि आप केवल एक फीका करना चाहते हैं और आपके द्वारा पूर्ण कर लेने के बाद पहली छवि को निकालना चाहते हैं:

 - (void) crossfade { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.5]; [UIView setAnimationDelegate:imageView1]; [UIView setAnimationDidStopSelector:@selector(removeFromSuperview)]; imageView1.alpha = 0 [UIView commitAnimations]; } 

संपादित करें:

यदि आप एक कारण खोज रहे हैं कि आपका कोड काम नहीं करता है, तो यह इसलिए है क्योंकि आप सिर्फ नई छवि के लिए संपत्ति की स्थापना कर रहे हैं, फिर एक बेकार एनीमेशन जोड़ना fromValue में से fromValue और toValue सेट होने की आवश्यकता है, फिर उस एनीमेशन को परत में जोड़ें, और इसे एनीमेशन करना चाहिए। सामग्री मैन्युअल रूप से सेट न करें