2012-11-16 55 views
0

我有一個名爲「nameLabel」的UILabel和我有一個動畫塊內部,這種情況的發生:的UILabel總是動畫播放至同一地點

_nameLabel.alpha = 1; 
CGAffineTransform translate = CGAffineTransformMakeTranslation(50, 50); 
_nameLabel.transform = translate; 

我認爲動畫的的UILabel到現場我指定,但它只是從上述位置動畫到我在Interface Builder中創建的位置。這裏有幫助嗎?

+0

上述代碼會將您的標籤向下移動50點並向右移動。你想要發生什麼? – jrturton

回答

1

你可以發佈動畫塊和其他相關代碼嗎?我不知道什麼CGAffineTransformMakeTranslation不帶標籤的,但如果你想動畫幀的位置,您可以使用此:

CGRect frame = _nameLabel.frame; 
frame.origin.y = 100; //Desired height, origin.x can be modified as well. 
//You can also change the frame size here but it wont work on UILabels, you will need `CGAffineTransformScale` for that. 

[UIView animateWithDuration: 1.5 
         delay:0.0 
        options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState 
       animations:^ { 

        [_nameLabel setFrame:frame]; 

       } 
       completion:^ (BOOL finished) { 

       }]; 

編輯:另一種方法:

CGRect frame = _nameLabel.frame; 
frame.origin.y = 100; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:0.5]; 

[_nameLabel setFrame: newFrame]; 

[UIView commitAnimations]; 

當前狀態是可能標籤的當前位置,首先嚐試,但如果沒有任何反應,則刪除UIViewAnimationOptionBeginFromCurrentState或在動畫之前將標籤的框架設置到另一個位置,並將其移動到動畫塊中的初始位置(位於xib文件中的位置) ,你的電話。

+0

不幸的是我用[UIView beginAnimates:@「animation」context:NULL]使用動畫塊;但是你的解決方案就是我之前使用的解決方案。我無法讓我的方式工作。感謝幫助,雖然人。 – barndog

+0

剛剛編輯我的答案,也許這一個會爲你工作。 –

+0

你是男人中的神。 – barndog

1

小心,因爲Autolayout會導致很多問題。

嘗試取消選中「使用自動佈局」

它解決了我所有的問題想翻譯的對象。