2010-03-24 33 views
10

Tôi đã có một cái nhìn xung quanh và không tìm thấy những gì tôi đã chính xác tìm kiếm.Lật hoạt ảnh khi bộ điều khiển được đẩy trên iPhone

Có cách nào để có hoạt ảnh lật khi đẩy bộ điều khiển chế độ xem không?

Tôi đọc rằng bạn có thể thay đổi hoạt ảnh bằng cách sử dụng bộ điều khiển chế độ xem nhưng AFAIK hoạt ảnh cho chế độ xem phương thức từ dưới lên trên và đó không phải là những gì tôi đang tìm kiếm. Có cách nào để có hoạt ảnh lật không?

Trả lời

2

Đối với bộ điều khiển chế độ xem được trình bày có phương thức, bạn có thể thay đổi hoạt ảnh với thuộc tính modalTransitionStyle. AFAIK, không có cách nào để thay đổi hoạt ảnh đẩy của bộ điều khiển điều hướng (ngoại trừ việc xây dựng lại UINavigationController từ đầu).

+0

Được rồi, nên là đủ cho bây giờ;) Thks. – chacha

+2

Sau một cuộc săn dài, tôi nhận được liên kết ** github ** này. Nó đang làm việc cho tôi https://github.com/devindoty/iOS-Transition-Pack –

51

một cái gì đó như thế này nên làm việc

[UIView beginAnimations:@"animation" context:nil]; 
[self.navigationController pushViewController: yourviewcontroller animated:NO]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 

đừng quên để thiết lập hoạt hình hoặc không có khi gọi pushViewController

+1

chúng ta có thể làm chậm hoạt ảnh được không? Nó khá nhanh .. Kính trọng – iscavengers

+4

bạn có thể sử dụng setAnimationDuration để chỉ định thời lượng tính bằng giây như [UIView setAnimationDuration: 1.5]; – John

+3

0.7 có vẻ đúng, nếu bạn muốn nó khớp với ứng dụng Thời tiết. –

5
- (void)viewWillDisappear:(BOOL)animated { 
[UIView beginAnimations:@"animation2" context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration: 0.7]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; } 

trong viewController mới sẽ giúp bạn lật lại theo cùng một cách (thay vì trượt sang trái) khi nút quay lại trên thanh công cụ được đẩy - đảm bảo hoạt ảnh được bật ở đây, ví dụ: nếu bạn tạo nút tùy chỉnh để bật ngăn xếp, hãy sử dụng:

- (void) backToPrevious: (id) sender 
{ 
    //[self.navigationController popViewControllerAnimated:YES]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+1

Như đã đề cập trong [Tài liệu UIView] (http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html), phương thức 'beginAnimations: context:' là một phần của một nhóm phương pháp mà Apple khuyến khích các nhà phát triển sử dụng (từ iOS 4 trở đi). Họ khuyên bạn nên sử dụng phương pháp hoạt hình dựa trên khối UIView thay thế (ví dụ: 'animateWithDuration: animations: completion:'). –

+0

Cách tiếp cận này làm việc rất tốt cho tôi! –

15

này cũng làm việc .. cho iOS 4.0 and greater

[UIView transitionWithView:self.navigationController.view duration:0.8 options:UIViewAnimationOptionTransitionFlipFromLeft 
          animations:^(void) { 
           BOOL oldState = [UIView areAnimationsEnabled]; 
           [UIView setAnimationsEnabled:NO]; 
           [self.navigationController pushViewController:viewController animated:YES]; 
           [UIView setAnimationsEnabled:oldState]; 
          } 
          completion:nil]; 
+0

Tôi không hoạt động tốt trong iOS7, vì hoạt ảnh xem được cắt làm đôi và sau đó "nhảy" vào vị trí khi hoạt ảnh được thực hiện. Tuy nhiên, cách Apple không khuyến khích vẫn hoạt động hoàn hảo. – margusholland

Các vấn đề liên quan