2017-07-19 10 views
0

VideoUIViewAnimationTransitionフリップUIImageView下で私のタップ機能で

私UIView.transitionsは、最初の時間を動作しますが、バック前面側に反転するために私else文のために二回目は、毎回クラッシュします。エラーメッセージ "致命的なエラー:オプション値をアンラッピングしている間に予期せずnilが見つかりました"が表示されます。首尾よく前後に前に戻ってきて、毎回前に戻るようにしてください。 ;)また、ImageOne &イメージを私のストーリーボードに2つ追加しました!あなたは劇中「から」ビューを維持するための第二のアニメーションオプションを追加する必要が

import UIKit 
import Foundation 
import Firebase 
import FirebaseDatabase 

class ViewController: UIViewController { 

@IBOutlet weak var mainScrollView: UIScrollView! 
@IBOutlet weak var imageOne: UIImageView! 
@IBOutlet weak var imageTwo: UIImageView! 

var myImageArray = [UIImage]() 
var myImageArray2 = [UIImage]() 

var back: UIImageView! 
var front: UIImageView! 

var showingFront = true 

override func viewDidLoad() { 
    super.viewDidLoad() 
    SignedIn() 

    self.view.addGestureRecognizer(revealViewController().panGestureRecognizer()) 

    let singleTap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapped)) 
    singleTap.numberOfTapsRequired = 1 
    mainScrollView.addGestureRecognizer(singleTap) 
    mainScrollView.isUserInteractionEnabled = true 

    mainScrollView.frame = view.frame 

    myImageArray = [image1, image2 ,image3, image4, image5] 
    myImageArray2 = [imageText1, imageText2 ,imageText3, imageText4, imageText5] 

    for i in 0..<myImageArray.count { 

     front = UIImageView() 
     front.image = myImageArray[i] 
     front.contentMode = .scaleToFill 
     let yPosition = self.view.frame.height * CGFloat(i) + self.view.frame.height/2 - (self.view.frame.height/1.1)/2 
     let xPosition = self.view.frame.width/2 - (self.view.frame.width/1.1)/2 
     front.frame = CGRect(x: xPosition, y: yPosition, width: self.view.frame.width/1.1, height: self.view.frame.height/1.1) 
     front.layer.borderWidth = 5 

     back = UIImageView() 
     back.image = myImageArray2[i] 
     back.contentMode = .scaleToFill 
     back.frame = CGRect(x: xPosition, y: yPosition, width: self.view.frame.width/1.1, height: self.view.frame.height/1.1) 
     back.layer.borderWidth = 5 

     mainScrollView.contentSize.height = mainScrollView.frame.height * CGFloat(i + 1) 

     imageOne.addSubview(front) 
     imageTwo.addSubview(back) 
    } 
} 

func tapped() { 
    print("Hello") 
    if (showingFront) { 
     UIView.transition(from: imageOne, to: imageTwo, duration: 1, options: UIViewAnimationOptions.transitionFlipFromRight, completion: nil) 
     showingFront = false 
    } else { 
     UIView.transition(from: imageTwo, to: imageOne, duration: 1, options: UIViewAnimationOptions.transitionFlipFromLeft, completion: nil) 
     showingFront = true 
    } 
} 

}

答えて

1

。ここでは、私はそれを行う方法は次のとおりです。

// declare the animation options 
let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromRight, .showHideTransitionViews] 

func tapped() { 
    print("Hello") 
    if (showingFront) { 
     UIView.transition(from: imageOne, to: imageTwo, duration: 1, options: transitionOptions, completion: nil) 
     showingFront = false 
    } else { 
     UIView.transition(from: imageTwo, to: imageOne, duration: 1, options: transitionOptions, completion: nil) 
     showingFront = true 
    } 
} 

私はそれはスウィフト2コードとして、あなたが違っそれを行うことができ、2番目のオプションを追加してくれ固体時間を要したことを思い出してください。

+0

恐ろしい、ありがとうございました:)しばらくの間これに固執しました。あなたは命の恩人です! –

関連する問題