スライドタッチで2点の間でUIViewをスライドさせようとしています。私はUIPanGestureRecognizerを使ってみました。スライドはうまくいきますが、ビューが限界点に達すると、不規則なジャンプがあります。それは滑らかではありません。これは私のジェスチャー機能です:2つの固定点の間のUIViewのスライディング
func wasDragged(gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == UIGestureRecognizerState.began || gestureRecognizer.state == UIGestureRecognizerState.changed {
let translation = gestureRecognizer.translation(in: self.view)
print(gestureRecognizer.view!.center.x)
if(gestureRecognizer.view!.center.x <= self.view.frame.width) && (gestureRecognizer.view!.center.x >= self.view.frame.width - 100) {
gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y)
}else if (gestureRecognizer.view!.center.x > self.view.frame.width){
gestureRecognizer.view!.center = CGPoint(x: self.view.frame.width, y: gestureRecognizer.view!.center.y)
}else if (gestureRecognizer.view!.center.x < self.view.frame.width - 100){
gestureRecognizer.view!.center = CGPoint(x: self.view.frame.width - 100, y: gestureRecognizer.view!.center.y)
}
gestureRecognizer.setTranslation(CGPoint(x: 0,y: 0), in: self.view)
}
}
助けてください?ありがとう。
あなたのコードは非常に疑わしいです。いくつかの中間的なローカル変数を使用することで、はるかにきれいにコンパイルできます。あなたは 'center'を' width'という長さで設定するべきではありません。そしてなぜあなたの3番目の 'else if'が中心xがwidth-minusよりも_less_であるかどうかをテストしていますか?もちろん幅からマイナス100にジャンプします!それがあなたのコードが言うことです。 – matt
yは固定されています。最初のビューの幅とこの幅-100の2点間でcustomViewを移動します。 –
"初期ビューの幅"は座標ではなく、ポイントではありません。それは長さです。 – matt