2017-03-03 7 views
0
class PhotoViewController: UIViewController { 

override var prefersStatusBarHidden: Bool { 
    return true 
} 

private var backgroundImage: UIImage 

init(image: UIImage) { 
    self.backgroundImage = image 
    super.init(nibName: nil, bundle: nil) 
    print(image) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 


    self.view.backgroundColor = UIColor.gray 
    let backgroundImageView = UIImageView(frame: view.frame) 
    backgroundImageView.image = backgroundImage 
    backgroundImageView.isUserInteractionEnabled = true 


    let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGestureRecognizerAction(_:))) 
    backgroundImageView.addGestureRecognizer(panGestureRecognizer) 


    view.addSubview(backgroundImageView) 
} 




func panGestureRecognizerAction(_ gesture: UIPanGestureRecognizer){ 
    let translation = gesture.translation(in: view) 
    view.frame.origin.y = translation.y 

    if gesture.state == .ended{ 

     let velocity = gesture.velocity(in: view) 

     if velocity.y > 1500{ 
      UIView.animate(withDuration: 0.5, animations: { 
       self.dismiss(animated: true, completion: nil) 
      }) 
     } else{ 
      UIView.animate(withDuration: 0.3, animations: { 

       self.view.frame.origin = CGPoint(x: 0, y: 0) 
      }) 
     } 
    } 
} 

ビュー全体が動いて黒い背景が表示されます。代わりにbackgroundImageViewを動かすにはどうすればいいですか?下のビューを表示しようとしています。その他の情報が必要な場合は、私に知らせてください。メインビューの代わりにbackgroundImageViewをドラッグ可能にするにはどうすればいいですか?

答えて

0

あなたのpanGestureRecognizerActionには、あなたのviewControllerのviewであるviewを移動するように求めています。その代わり、と言ってgestureRecognizerに割り当てられviewを使用します。

if let bgImage = gesture.view { 
    bgImage.frame.origin.y = translation.y 
} 

gesture.viewは、私が最初にそれをチェックする理由である、任意です。 gesture.view?.frame.origin.y = translation.yと言うこともできますが、それはうまくいくでしょう。

+0

素晴らしいです。どうもありがとう! –

関連する問題