如何动画标签或uiview像swing

时间:2012-06-25 09:21:43

标签: iphone ipad

如何设置动画UIView或UILable的动画,如swing

CGPoint newLeftCenter = CGPointMake( 00.0f + label.frame.size.width / 2.0f, label.center.y);
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0f];
label.center = newLeftCenter;
[UIView commitAnimations];  

这将从左到右动画!

我也需要从右到左制作动画!

所以当我的动作触发它时,UIVIew或标签需要从左向右和从右向左移动。

@thanks提前

2 个答案:

答案 0 :(得分:1)

如果您要添加两个连续动画,则可以使用setAnimationDidStopSelector

执行以下操作
- (void) animationDidStop:(NSString *)animationID 
                 finished:(NSNumber *)finished 
                  context:(void *)context
{
    CGPoint newRightCenter = CGPointMake( 00.0f + label.frame.size.width * 2, label.center.y);
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0f];
    label.center = newRightCenter;
    [UIView commitAnimations];  
}

- (void) doAnimation
{
    CGPoint newLeftCenter = CGPointMake( 00.0f + label.frame.size.width / 2.0f, label.center.y);

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0f];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    label.center = newLeftCenter;
    [UIView commitAnimations];  
}

答案 1 :(得分:0)

您可以通过将动画自动反转设置为YES来执行此操作。

[UIView setAnimationRepeatAutoreverses:YES];

来自Apple文件:

If you enable autoreversing, a single animation cycle changes the properties being animated to their new values and then back to their original values. At the end of the animations, the affected views are then updated immediately to reflect the new values. This method does nothing if called from outside of an animation block. By default, autoreversing is disabled.

If you combine autoreversing with a repeat count (settable using the setAnimationRepeatCount: method), you can create animations that shift back and forth between the old and new values the specified number of times. However, remember that the repeat count indicates the number of complete cycles. If you specify an integral value such as 2.0, the animation ends on the old value, which is followed by the view immediately updating itself to show the new value, which might be jarring. If you want the animation to end on the new value (instead of the old value), add 0.5 to the repeat count value. This adds an extra half cycle to the animation.

Use of this method is discouraged in iOS 4.0 and later. Instead, you should use theanimateWithDuration:delay:options:animations:completion: method to specify your animations and the animation options.
相关问题