スライドアップジェスチャーのUIViewを初期位置から固定された最終位置に移動しようとしています。画像は手のジェスチャーで移動し、独立して動かす必要はありません。Swift:スライドジェスチャーでUIViewを移動
私はどこから始めるべきか分からないので、何も試していません。どのクラスを使用するのかはわかりません。
スライドアップジェスチャーのUIViewを初期位置から固定された最終位置に移動しようとしています。画像は手のジェスチャーで移動し、独立して動かす必要はありません。Swift:スライドジェスチャーでUIViewを移動
私はどこから始めるべきか分からないので、何も試していません。どのクラスを使用するのかはわかりません。
最後に、それは以下好きでした。ここ
let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:"))
slideUpView.addGestureRecognizer(gesture)
slideUpView.userInteractionEnabled = true
gesture.delegate = self
ジェスチャーが検出されたときに、次の関数が呼び出されるが、(私はこの点を越え554に戻ったときにビューが移動をリセットするよ、&を555の最大centre.yを持つようにビューを制限していますセレクタを割り当てる場合)
func wasDragged(gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == UIGestureRecognizerState.Began || gestureRecognizer.state == UIGestureRecognizerState.Changed {
let translation = gestureRecognizer.translationInView(self.view)
print(gestureRecognizer.view!.center.y)
if(gestureRecognizer.view!.center.y < 555) {
gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x, gestureRecognizer.view!.center.y + translation.y)
}else {
gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x, 554)
}
gestureRecognizer.setTranslation(CGPointMake(0,0), inView: self.view)
}
}
おそらくUIPanGestureRecognizer
を使用します。
let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:"))
customView.addGestureRecognizer(gesture)
gesture.delegate = self
そして唯一のy軸に沿ってオブジェクトをドラッグする:
func wasDragged(gesture: UIPanGestureRecognizer) {
let translation = gesture.translationInView(self.view)
// Use translation.y to change the position of your customView, e.g.
customView.center.y = translation.y // Customize this.
}
スイフト3.xの更新
、構文が変更され、現在#selector
機能の実装:
func navViewDragged(gesture: UIPanGestureRecognizer){
//Code here
}
@IBAction func handlePanGesture(_ recognizer: UIPanGestureRecognizer) {
if MainView.bounds.contains(mainImage.frame) {
let recognizerCenter = recognizer.location(in: MainView)
mainImage.center = recognizerCenter
}
if MainView.bounds.intersection(mainImage.frame).width > 50 && MainView.bounds.intersection(mainImage.frame).height > 0 {
let recognizerCenter = recognizer.location(in: MainView)
print(recognizerCenter)
mainImage.center = recognizerCenter
}
}
@IBAction func handlePinchGesture(_ recognizer: UIPinchGestureRecognizer) {
mainImage.transform = mainImage.transform.scaledBy(x: recognizer.scale, y: recognizer.scale)
recognizer.scale = 1.0
}
@IBAction func handleRotateGesture(_ recognizer: UIRotationGestureRecognizer) {
mainImage.transform = mainImage.transform.rotated(by: recognizer.rotation)
recognizer.rotation = 0.0
}
うまく働いています:) – Bharathi
あなたのコードに委任する必要はありますか? – SPatel