我有一个UIPanGestureRecognizer。它工作正常。我做了一个if语句,所以当有人触摸图片时,它将是alpha 0.7,它将是1.5倍。 alpha工作正常,但当我输入CAAffineTransformMakeScale方法时,我的图像不会移动。
这是我的代码:
- (IBAction)Bloemen:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
if (UIGestureRecognizerStateBegan)
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:0.1];
[UIView setAnimationDuration:0.4];
bloemen.alpha = 0.7f;
bloemen.transform = CGAffineTransformMakeScale(1.5,1.5);
[UIView commitAnimations];
}
if (UIGestureRecognizerStateEnded) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:0.1];
[UIView setAnimationDuration:0.1];
bloemen.alpha = 1.0f;
bloemen.transform = CGAffineTransformIdentity;
[UIView commitAnimations];
}
}
答案 0 :(得分:0)
关键问题是您的if
语句未检查state
属性。它应该是:
if (recognizer.state == UIGestureRecognizerStateBegan)
{
// began code here
}
else if (recognizer.state == UIGestureRecognizerStateEnded)
{
// ended code here
}
另请注意,此手势识别器仅在您关闭自动布局时才有效。如果您正在使用autolayout,则必须更改约束。
如果您原谅风格观察,我可能也倾向于建议:
使用基于块的动画;
如果不需要,则不引用非局部变量(即引用recognizer.view
而不是bloemen
),这样可以更轻松地重用此处理程序来拖放各种{{1}您选择添加此手势的对象;和
使用标准命名约定,使用小写字母开始方法名称并遵循UIView
约定。
这些都不重要,请根据您的需要使用或忽略,但这展示了一些最佳实践:
verbNoun