2012-03-01 13 views
10

आईफोन में बदलते विचारों पर भंग एनीमेशन कैसे बनाएं?आईफोन पर बदलते विचारों पर भंग एनीमेशन कैसे बनाया जाए?

प्रभाव को विसर्जित करें: एक दृश्य किसी भी आंदोलन के बिना किसी और को बदल रहा है।

धन्यवाद मदद के लिए बहुत कुछ!

उत्तर

17

एनीमेशन के लिए आप देख रहे हैं:

[UIView animateWithDuration: 1.0 
       animations:^{ 
        view1.alpha = 0.0; 
        view2.alpha = 1.0; 
       }]; 

एक और पूरा समाधान है, कि एनीमेशन का उपयोग कर हो सकता है:

- (void) replaceView: (UIView *) currentView withView: (UIView *) newView 
{ 
    newView.alpha = 0.0; 
    [self.view addSubview: newView]; 

    [UIView animateWithDuration: 1.0 
        animations:^{ 
         currentView.alpha = 0.0; 
         newView.alpha = 1.0; 
        } 
        completion:^(BOOL finished) { 
         [currentView removeFromSuperview]; 
        }]; 
} 
-1
[UIView beginAnimations: @"cross dissolve" context: NULL]; 
[UIView setAnimationDuration: 1.0f]; 
self.firstView.alpha = 0.0f; 
self.secondView.alpha = 1.0f; 
[UIView commitAnimations]; 
+0

मुझे लगता है कि यह तरीकों का उपयोग न करना बेहतर है। ब्लॉक बहुत अधिक सुरुचिपूर्ण हैं। जैसा कि ऐप्पल दस्तावेज कहता है: इस विधि का उपयोग आईओएस 4.0 और बाद में निराश है। – Gabriel

+0

क्यों? ब्लॉक क्या हैं? – Dmitry

+0

ब्लॉक-आधारित प्रोग्रामिंग। @ एशले मिल्स द्वारा जवाब देखें। – Gabriel

16

तुम भी iOS5 में और बाद में UIViewAnimationOptionTransitionCrossDissolve उपयोग कर सकते हैं ...

[UIView transitionFromView:currentView 
        toView:nextView 
        duration:2 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       completion:^(BOOL finished) { 
        [currentView removeFromSuperview]; 
        }]; 
+0

धन्यवाद! आईओएस 4.3 पर तैनाती इस कोड के साथ उपलब्ध नहीं होगी? – Dmitry

+1

या मैंने पहले ही इसमें बताया है ... इसका उपयोग आईओएस 5 और बाद में किया जाएगा :) – Aravindhan

1
class func transition(from fromView: UIView, to toView: UIView, duration: TimeInterval, options: UIViewAnimationOptions = [], completion: ((Bool) -> Void)? = nil) 

दिए गए मापदंडों का उपयोग कर निर्दिष्ट विचारों के बीच एक संक्रमण एनीमेशन बनाता है: 510,403,210 UIView एक विधि transition(from:to:duration:options:completion:) बुलाया निम्नलिखित घोषणा गई है।


कई UIViewAnimationOptions पैरामीटर है कि आप transition(from:to:duration:options:completion:) को पारित कर सकते हैं के अलावा transitionCrossDissolve है।

static var transitionCrossDissolve: UIViewAnimationOptions { get } 

एक संक्रमण है कि अगले करने के लिए एक दृश्य से घुल:

transitionCrossDissolve निम्नलिखित घोषणा की है।


निम्नलिखित स्विफ्ट 3 खेल का मैदान कोड से पता चलता एक क्रॉस के साथ दो UIViews के बीच टॉगल करने के लिए कैसे transition(from:to:duration:options:completion:) और transitionCrossDissolve का उपयोग करके संक्रमण भंग:

import UIKit 
import PlaygroundSupport 

class ViewController: UIViewController { 

    let firstView: UIView = { 
     let view = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100)) 
     view.backgroundColor = .red 
     return view 
    }() 
    let secondView: UIView = { 
     let view = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100)) 
     view.backgroundColor = .blue 
     return view 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.backgroundColor = .white 
     view.addSubview(firstView) 

     let tapGesture = UITapGestureRecognizer(target: self, action: #selector(toggle(_:))) 
     view.addGestureRecognizer(tapGesture) 
    } 

    func toggle(_ sender: UITapGestureRecognizer) { 
     let presentedView = view.subviews.first === firstView ? firstView : secondView 
     let presentingView = view.subviews.first !== firstView ? firstView : secondView   
     UIView.transition(from: presentedView, to: presentingView, duration: 1, options: [.transitionCrossDissolve], completion: nil) 
    } 

} 

let controller = ViewController() 
PlaygroundPage.current.liveView = controller 
संबंधित मुद्दे