我将名为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点。我在哪里出错了?
答案 0 :(得分:1)
我不会在viewDidLoad方法中制作动画。此时,iOS尚未完全计算子视图的框架。
如果你用viewDidAppear这样的方法做这个动画:那么你会发生什么?
答案 1 :(得分: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];
}