2

我将一个名为 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 动画,而是将标签从 point(0,0) 动画到 A 点。我在哪里弄错了?

4

2 回答 2

1

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

如果您在 viewDidAppear 之类的方法中执行此动画:那么您会发生什么?

于 2012-12-28T05:16:54.030 回答
0

就像 PaReeOhNos 说的那样,您可以将其推迟到设置其起始坐标viewDidAppear的点testLabel,或者您可以执行以下操作:

- (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];
}
于 2012-12-28T05:42:16.523 回答