iOS - 在故事板中创建的UILabel没有正确动画

时间:2012-12-28 05:01:47

标签: ios animation storyboard

我将名为testLabel的UILabel拖到位置A(140,40)的故事板中。我想将它从A动画到B位(100,250)。所以我把代码编写如下..

#import "testViewController.h"

@interface testViewController ()
@property (weak, nonatomic) IBOutlet UILabel *testLabel;
@end

@implementation testViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [UIView animateWithDuration:1.0
                          delay:1.0
                        options:UIViewAnimationOptionCurveLinear
                     animations:^{
                         CGPoint b = CGPointMake(100, 250);
                         self.testLabel.center = b;
                     }
                     completion:nil];
}

@end

而不是从A到B的动画,模拟器将标签从点(0,0)动画到A点。我在哪里出错了?

2 个答案:

答案 0 :(得分:1)

我不会在viewDidLoad方法中制作动画。此时,iOS尚未完全计算子视图的框架。

如果你用viewDidAppear这样的方法做这个动画:那么你会发生什么?

答案 1 :(得分:0)

就像PaReeOhNos所说,你可以推迟到viewDidAppeartestLabel将设置起始坐标,或者你可以执行以下操作:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.testLabel.center = CGPointMake(140, 40);

    [UIView animateWithDuration:1.0
                          delay:1.0
                        options:UIViewAnimationOptionCurveLinear
                     animations:^{
                         self.testLabel.center = CGPointMake(100, 250);
                     }
                     completion:nil];
}