2016-06-28 10 views
0

Einstellung der Animation zum wiederholten Ein- und Ausblenden. 'viewSmall' und 'viewBig' sind UIImageViews.UIView.animateWithDuration wird nicht auf separaten Ansichtscontrollern animiert.

view storyboard shot

class TestViewController: UIViewController { 

    @IBOutlet weak var viewBig: UIImageView! 
    @IBOutlet weak var viewSmall: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 

     animate() 
    } 

    func animate() { 
     UIView.animateWithDuration(0.5, 
            delay: 0, 
            options: [.Repeat, .Autoreverse], 
            animations: { 
            self.viewSmall.alpha = 0 
      }, 
            completion: nil) 

     UIView.animateWithDuration(0.5, 
            delay: 0, 
            options: [.Repeat, .Autoreverse], 
            animations: { 
            self.viewBig.alpha = 0 
      }, 
            completion: nil) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

Dieser Code animiert nicht auf einen nur wenige View-Controller und die Ansicht-Controller scheinen unabhängig, keine segue zu anderen Ansicht-Controller, auf meiner Vermutung. Dieser Code funktioniert perfekt auf View-Controllern, die mit dem Navigationsansicht-Controller verbunden sind.

Wie kann ich es auf unabhängige Ansicht Controller machen? Bitte helfen.

+0

"Weil sein Code funktioniert perfekt", wer Code? Bitte stellen Sie vollständigen Code und beschreiben Sie im Detail, was Sie erreichen möchten? –

+0

Entschuldigung, korrigiert. es bedeutet "weil dieser Code ..." – Minjee

+0

Ich bekomme immer noch nicht dein Problem. Animation funktioniert nicht? oder es funktioniert nicht auf einem bestimmten ViewController? Wenn ja, dann zeige den ViewController-Code und dein Storyboard sowie –

Antwort

0

Eine brillante Lösung gefunden. Verwendet Dispatch_after, um Dauer und Verzögerung abzufangen.

func animate(){ 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.0 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), { 

     // Animate the transition 
     UIView.animateWithDuration(0.5, 
           delay: 0, 
           options: [.Repeat, .Autoreverse], 
           animations: { 
           self.viewSmall.alpha = 0 
     }, 
           completion: nil) 

     UIView.animateWithDuration(0.5, 
           delay: 0, 
           options: [.Repeat, .Autoreverse], 
           animations: { 
           self.viewBig.alpha = 0 
     }, 
           completion: nil) 
    }) 
} 

Quelle aus: Swift UIView animateWithDuration completion closure called immediately