2012-12-28 47 views
2

我將名爲testLabel的UILabel拖動到位置A(140,40)的故事板。我想將它從A移動到B位置(100,250)。所以我寫了從A的代碼如下..iOS - 在故事板中創建的UILabel不能正確動畫

#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 

,而不是動畫到B,仿真動畫從點(0,0)標籤,點答:我從哪裏弄來了?

+0

如果刪除了動畫,並在標籤出現在正確的位置? (位置A) –

+0

PaReeOhNos是正確的。將代碼移動到viewdidar中它將起作用!它不會在viewdidload中工作,甚至設置初始點self.testLabel.center = CGPointMake(140,40);謝謝 – AlexHsieh

回答

1

我不會在viewDidLoad方法中做你的動畫。此時,iOS尚未完全計算子視圖的框架。

如果您在viewDidAppear等方法中執行此動畫:那麼您會發生什麼?

+0

是的!它移動到viewdidappear後工作!謝謝 – AlexHsieh

+0

優秀:)沒問題 – PaReeOhNos

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]; 
}