2014-11-12 4 views
2

Ive пытался сделать два imageViews чередующимися с флип-анимацией, когда я нажимаю кнопку. И imageViews, и кнопка создаются в раскадровке.Как перевернуть изображение в Swift

Здесь я нахожусь после нескольких дней работы над этим и ищет ответы. Я становлюсь очень близким, но на данный момент, когда изображение срабатывает в первый раз, когда оно работает, а затем второй флип приводит к тому, что оба изображения переходят в верхний левый угол экрана.

Я думаю, что это может быть связано с тем, как я настраиваю вид контейнера. Может быть, он отключился после первого щелчка и должен быть сброшен?

Любая помощь была бы принята с благодарностью.

import UIKit 
var flipAnimationContainer: UIView! 
class flipViewController: UIViewController { 

var showingBack = false 


@IBOutlet weak var frontView: UIImageView! 

@IBOutlet weak var backView: UIImageView! 

@IBAction func flipButton(sender: AnyObject) { 


    if (showingBack) { 


     UIView.transitionFromView(backView, toView: frontView, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromBottom, completion: nil) 

     showingBack = false 


    } else { 


     backView.hidden = false 

     UIView.transitionFromView(frontView, toView: backView, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromBottom, completion: nil) 

     showingBack = true 

    } 


} 


override func viewDidLoad() { 

    super.viewDidLoad() 


    // let rect = CGRectMake(self.headsView.frame.minX, self.headsView.frame.minY, self.headsView.frame.width, self.headsView.frame.height) 

    animationContainer = UIView(frame: self.frontView.frame) 

    animationContainer.addSubview(backView) 

    animationContainer.addSubview(frontView) 

    view.addSubview(flipAnimationContainer) 


    backView.hidden = true 

} 


override func didReceiveMemoryWarning() { 

    super.didReceiveMemoryWarning() 

    // Dispose of any resources that can be recreated. 

    } 


} 

ответ

4

Перед добавлением frontView и backView в качестве подзонов.

frontView.setTranslatesAutoresizingMaskIntoConstraints(true) 
backView.setTranslatesAutoresizingMaskIntoConstraints(true) 

После этого. В функции flipButton.

вариант
UIView.transitionFromView(backView, toView: self.frontView, duration: 1, options: .TransitionFlipFromBottom | .ShowHideTransitionViews , completion: nil) 

.ShowHideTranstionViews предотвратит fromView от сменяется toView.

+0

Большое вам спасибо за помощь. Кажется, что я такой плотный, я не могу получить его, даже когда вы его изложили. Теперь ImageView теперь остается и переходы между обоими изображениями, но не происходит флип-анимация, и она не находится в правильном месте на представлении. – Benjammann

1

Вот что у меня есть сейчас. Это переход между imageViews, удерживая их в одном месте, но они не в том месте на экране, и нет флип-анимации:

import UIKit 

var animationContainer: UIView! 

class ViewController: UIViewController { 

    var showingBack = false 

    @IBOutlet weak var frontView: UIImageView! 

    @IBOutlet weak var backView: UIImageView! 

    @IBAction func flipButton(sender: AnyObject) { 

     if (showingBack) { 

      UIView.transitionFromView(backView, toView: self.frontView, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromBottom | UIViewAnimationOptions.ShowHideTransitionViews, completion: nil) 
      showingBack = false 

     } else { 

      backView.hidden = false 
      UIView.transitionFromView(frontView, toView: self.backView, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromBottom | UIViewAnimationOptions.ShowHideTransitionViews, completion: nil) 
      showingBack = true 



     } 


    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     animationContainer = UIView(frame: self.frontView.frame) 
     frontView.setTranslatesAutoresizingMaskIntoConstraints(true) 
     backView.setTranslatesAutoresizingMaskIntoConstraints(true) 
     animationContainer.addSubview(backView) 
     animationContainer.addSubview(frontView) 
     view.addSubview(animationContainer) 

     backView.hidden = true 

    } 

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


} 
+0

Я просто получил это, чтобы прокомментировать эти две строки: // frontView.setTranslatesAutoresizingMaskIntoConstraints (true) // backView.setTranslatesAutoresizingMaskIntoConstraints (true) – Benjammann