0

我正在尝试制作一个动画,当一个人在屏幕上从 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 点。有点奇怪。

我怎样才能正确地做到这一点?

4

1 回答 1

1

不要使用循环。只需使用您拥有的动画块。

  • 在块之前,将对象设置为点 A。
  • 在块中,将其设置为 B 点。块将使其动画。
  • 此外,在动画块之外初始化您的对象。

例子:

// 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),您也可以设置选项。

于 2012-12-11T22:54:57.637 回答