私は現在XCodeで遊んでいますが、Objective-C / Cocoa Touchなどの経験がないので、これがひどく初歩的な質問である場合は我慢してください。私は何日もグーグルに答えを試みてきて、行き止まりに飽きてきたので、皆さんにだけ尋ねます。
水平方向にパンするメニューを作成しようとしています。
私は現在、にアタッチされてUILabels
いるマスターUIView
オブジェクト内に3を保持していUIPanGestureRecognizer
ます。
handlePanメソッドを使用して、ユーザーのパンジェスチャに従って* menuview オブジェクトを受信および変換しましたが、要素を前後にスナップする場所を計算するために、 PanGestureがリリースされたときにの中心座標を見つける必要があります。UIView
UIView
UIView
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, 150);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
if(recognizer.state == UIGestureRecognizerStateEnded)
{
if(recognizer.view.center.x >= 576);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((764 - menuview.center.x), 0);
[UIView commitAnimations];
}
if(recognizer.view.center.x && menuview.center.x >= 264);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((406 - menuview.center.x), 0);
[UIView commitAnimations];
}
if(recognizer.view.center.x < 264);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((122 - menuview.center.x), 0);
[UIView commitAnimations];
}
}
}
UIView
ユーザーがを離したときの中心がどこにあるかに応じて、x軸上の3つのポイントの1つにスナップしようとしていたことがわかりますPanGesture
。
現時点では、「recognizer.view.center.x」ifステートメントを無視しているように動作しています。リリースされた場所に関係なく、x = 122(122 --menuview.center.x)にスナップします。
私はこれらのifステートメントを次のように試しました:
if(menuview.center.x >= 576);{...
などですが、それも失敗します。
UIViews
ユーザーがリリースしたときの現在の位置に基づいてアクションを作成するには、これらのifステートメントに何を入力する必要がありますPanGesture
か?
ありがとう、
クリス