2012-11-05 48 views
15

Ở đây tôi thấy làm thế nào để animate thay đổi tiêu đề UIButton 's sử dụng bây giờ bị phản đối beginAnimations:context: phương pháp:Animate UIButton của tiêu đề thay đổi

UIBUtton title animation for iPhone

Làm thế nào để làm điều tương tự sử dụng API hiện tại?

Cập nhật:

Tôi đã cố gắng sử dụng hình ảnh động dựa trên khối:

NSTimeInterval animationDuration = animated ? 1.f : 0.f; 
[UIView animateWithDuration:animationDuration delay:0.f options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction animations:^{ 
    [button setTitle:newTitle forState:UIControlStateNormal]; 
    [button setTitleColor:newTitleColor forState:UIControlStateNormal]; 
} completion:nil]; 

Sự thay đổi màu sắc được không sinh động.

+0

Vui lòng kiểm tra tài liệu, tt của tất cả các giải thích tại UIView tham khảo: http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview /uiview.html với giải thích rõ ràng về thay thế 'beginAnimations: context:'. –

Trả lời

44

Sử dụng khối:

[UIView transitionWithView:self.flipLabelButton duration:1 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ 

    [self.flipLabelButton setTitle:newText forState:UIControlStateNormal]; 

} completion:nil]; 
+0

Và đó là nó? Tôi nghĩ rằng chỉ những thuộc tính được ghi lại là "có thể hoạt hình" mới có thể được làm theo cách này. Hay không? –

+0

nếu bạn đang sử dụng các hàm animate ya, nhưng các hàm chuyển tiếp hoạt động cho mọi thứ vì nó áp dụng cho toàn bộ khung nhìn. – jjv360

+0

Tôi đã cập nhật câu hỏi của mình. Nó vẫn không hoạt hình. Bất kỳ ý tưởng? –

5

Ngoài AnimationGroups, có chung hai loại hình ảnh động, một là cho hình ảnh động bất động sản, người kia là dành cho hiệu ứng động giống như nội dung, chuyển tiếp hay bất cứ điều gì mà không thể sử dụng tài sản của bạn để làm hoạt hình. Vì vậy, giải pháp thứ hai là sự lựa chọn của bạn, và bạn có thể đạt được điều này bằng hai cách: sử dụng CATransition:

CATransition *transition = [CATransition animation]; 
transition.type = kCATransitionFade; 
transition.duration = 1; 
[button.layer addAnimation:transition forKey:kCATransition]; 
[button setTitle:newTitle forState:UIControlStateNormal]; 
[button setTitleColor:newColor forState:UIControlStateNormal]; 

cách khác là sử dụng một khối UIKit như @ jjv360 nói, nhưng bạn không thể làm động màu bên trong nó bởi vì màu sắc rõ ràng không thể bị lật.

8

Swift 3

UIView.transition(with: button, duration: 0.5, options: .transitionCrossDissolve, animations: { 
    self.button.setTitle("WOW, new title", for: .normal) 
    self.button.setTitleColor(UIColor.red, for: .normal) 
}, completion: nil) 
Các vấn đề liên quan