我正在尝试制作一个动画,当一个人在屏幕上从A点到B点时,对象应该从A点慢慢地(水平地)滑动到B点。 顺便说一句,我是动画的新手。
[UIView animateWithDuration:10
delay:0
options:nil
animations:^ {
if(magnifier != nil){
[magnifier removeFromSuperview];
}
magnifier = [[MagnifierView alloc] init];
magnifier.viewToMagnify = imageView;
magnifier.touchPoint = newPoint;
[imageView addSubview:magnifier];
[magnifier setNeedsDisplay];
}
completion:nil];
但由于某种原因,它正在向上移动,然后最终到达B点。在一个奇怪的曲线中。
我该如何正确地做到这一点?
答案 0 :(得分:1)
不要使用循环。只需使用你拥有的动画块。
示例:
// initialize your object outside the block
magnifier = [[MagnifierView alloc] init];
[magnifier setFrame:CGRectMake(0, 0, 100, 100)]; // for example, start at 0, 0 (width and height set to 100 for demo purposes)
[imageView addSubview:magnifier];
[UIView animateWithDuration:10
delay:0
options:nil
animations:^ {
// inside the animation block, put the location you want the magnifier to move to
[magnifier setFrame:CGRectMake(500, 0, 100, 100)]; // for example, move to 500, 0
}
completion:^(BOOL finished) {
// do anything you need after here
}];
另外,对于选项,您可以设置UIViewAnimationOptionCurveEaseInOut
如果您希望在动画的开头和结尾有缓动效果,或UIViewAnimationOptionCurveLinear
如果您想要一个没有缓和的同样定时动画(还有其他可用,查找UIViewAnimationOptions)。