我目前正在使用XCode,但没有使用 Objective-C / Cocoa Touch 等的经验,所以如果这是一个非常初级的问题,请耐心等待。我只问你们,因为我几天来一直在尝试用谷歌搜索答案,并且厌倦了死胡同。
我正在尝试创建一个水平平移菜单。
我目前将 3UILabels
放在一个主UIView
对象中,该对象附加到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];
}
}
}
你看我试图捕捉到 x 轴上的三个点之一,这取决于UIView
用户释放PanGesture
.
目前,它的行为就好像它忽略了“ recognizer.view.center.x ” if 语句,因为无论它在哪里发布,它都会捕捉到x=122 (122 - menuview.center.x)。
我已经尝试了这些 if 语句:
if(menuview.center.x >= 576);{...
等,但这也失败了。
UIViews
当用户释放他们的 CURRENT 位置时,我需要在这些 if 语句中添加什么来创建操作PanGesture
?
谢谢,
克里斯