2012-05-11 41 views
7

Có, tôi đã tìm kiếm câu trả lời rồi. Không có giải pháp nào hoạt động, ngoại trừ một giải pháp không cung cấp tùy chọn cho quá trình chuyển đổi mờ dần, chỉ lật hoặc cuộn tròn.popViewControllerAnimated: hoạt ảnh chuyển tiếp tùy chỉnh?

Như thế này:

methodname 
    configure animation 
    [self.navigationController popViewControllerAnimated:NO]; 

Không có vấn đề gì nhiều hình ảnh động chuyển cấu hình tôi cố gắng, không có gì là rõ ràng khác biệt so với chỉ sử dụng duy nhất dòng nhạc pop điển hình. Nếu tôi thay đổi nó thành …Animated:YES];, tôi sẽ nhận được hoạt ảnh pop tiêu chuẩn, có thể có điều gì đó kỳ lạ xảy ra từ cấu hình bị hỏng.

Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể làm một pop với, nếu không CrossDissolve, thì ít nhất một cái gì đó trông giống nhau? Điều đó có thể xảy ra với bộ điều khiển điều hướng không?

Sử dụng chế độ xem phương thức sẽ có hoạt ảnh mặc định tôi muốn và tôi có thể quản lý chế độ xem dễ dàng, nhưng tôi không muốn làm điều đó.

Trả lời

23

Đối với loại chuyển đổi này, tôi thực sự khuyên bạn nên sử dụng bộ điều khiển chế độ xem, đó là cách hệ thống được thiết kế.

Nhưng nếu bạn nhấn mạnh vào việc sử dụng bộ điều hướng thì có một cách, mặc dù hơi xấu xí.

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 

CATransition *transition = [CATransition animation]; 
[transition setType:kCATransitionFade]; 
[self.navigationController.view.layer addAnimation:transition forKey:@"someAnimation"]; 

[self.navigationController popViewControllerAnimated:YES]; 
[CATransaction commit]; 

CATransaction sẽ tắt tất cả hoạt ảnh chuẩn. Các CATransition thêm một chuyển đổi mờ dần đến lớp điều khiển chuyển hướng khi xem được đổi chỗ (trong trường hợp này loại bỏ chế độ xem xem điều khiển được xuất hiện).

+2

Tuyệt đối hoàn hảo. – Thromordyn

+1

Trong iOS 7 tôi thấy rằng tôi cần phải vượt qua NO để popViewControllerAnimated chứ không phải là YES, nhưng nếu không điều này hoạt động độc đáo. – EricS

2

Trong iOS 7 ở trên, bạn có thể muốn xem xét UIViewControllerAnimatedTransitioning cho bộ điều khiển xem trình bày, hoặc UINavigationControllerDelegate phương pháp:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC 

Tôi có một số sample code from another question để biết thêm. câu trả lời

0

Joris Kluivers trong Swift 3:

CATransaction.begin() 
CATransaction.setDisableActions(true) 

let animation = CATransition() 
animation.type = kCATransitionFade 
self.navigationController?.view.layer.add(animation, forKey: "someAnimation") 
_ = self.navigationController?.popViewController(animated: false) 

CATransaction.commit() 
Các vấn đề liên quan