2015-02-08 22 views
8

Mục đích của tôi là tạo hoạt ảnh mượt mà bắt đầu trong bộ điều khiển xem đầu tiên và kết thúc trong bộ điều khiển chế độ xem thứ hai.Hoạt ảnh chuyển tiếp tùy chỉnh không rõ độ trễ giữa animationControllerForPresentedController và animateTransition

Tôi đang thử nghiệm với hoạt ảnh chuyển tiếp bằng cách sử dụng đối tượng tuân theo các giao thức UIViewControllerAnimatedTransitioningUIViewControllerTransitioningDelegate. Tôi thiết lập hai bộ điều khiển xem (VC) trong bảng phân cảnh và kết nối chúng với segue (hiển thị mặc định). Tôi cũng đã thực hiện phương pháp segue thư giãn trong VC đầu tiên và thiết lập một nút cho nó trong VC thứ hai.

Tôi gặp sự cố lạ. đối tượng của tôi có phương pháp

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { 

    self.presenting = true 
    NSLog("start") 
    return self 
} 

func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 
    if presenting { 
     NSLog("Animation Push") 
     transitionPush(transitionContext) 

    } 
    else { 
     NSLog("Animation Pop") 
     transitionPop(transitionContext) 

    } 
} 

Tôi có hai phương pháp khác nhau cho hình ảnh động từ VC đầu tiên thứ hai và từ thứ hai đến VC đầu tiên. Khi tôi kích hoạt segue, tôi có độ trễ rất lạ giữa các phương thức animationControllerForPresentedControlleranimateTransition. Đôi khi có thể mất khoảng 1 giây và toàn bộ hoạt ảnh chuyển tiếp của tôi phải là 1 giây cộng với độ trễ không mong đợi này quá lớn. Đây là một bản ghi:

2015-02-08 19:52:33.528 MyApp[1318:119598] start 
2015-02-08 19:52:33.979 MyApp[1318:119598] Animation Push 

Tôi không biết lý do tại sao sự chậm trễ này xảy ra và nếu có một cách để loại bỏ hoặc giảm nó? Tôi đã cố kiểm tra xem đây có phải là mã của tôi không, nhưng tôi không tìm thấy bất kỳ chứng minh nào về nó. Vui lòng hỏi thêm thông tin.

+0

Were bạn có thể giải quyết này? Cũng chạy vào cùng một vấn đề. – TWilly

+0

Tôi thấy bài đăng này thảo luận về lỗi ios8. Tôi đã thử một vài cách giải quyết nhưng vẫn chưa nhận được gì để làm việc. http://gotoanswer.com/?q=Animation+not+always+visible+from+animateTransition+in+UIViewControllerAnimatedTransitioning – TWilly

+0

@TWilly ngay bây giờ tôi đã gạt bỏ vấn đề này sang một bên, nhưng tôi sẽ quay lại sớm thôi. Nhưng ngay bây giờ tôi có một số suy nghĩ về nó. Trước hết tôi mô tả trong câu trả lời của tôi cho một chủ đề khác trong phần chỉnh sửa http://stackoverflow.com/a/25618714/1207902 Tôi cũng nghĩ rằng đây có thể là mô hình của tôi, xử lý dữ liệu quá lâu và kết quả này bị trì hoãn. Dù sao, tôi sẽ trở lại vấn đề này và cố gắng viết một câu trả lời cho nó, khi tôi hoàn thành. Nhưng bạn có thể kiểm tra các điểm mà tôi chỉ định. –

Trả lời

4

Tôi cũng gặp vấn đề tương tự. Có thể bạn không kích hoạt hoạt ảnh từ chuỗi chính (lời gọi presentViewController).

này giải quyết vấn đề này cho tôi (Objective-C code):

dispatch_async(dispatch_get_main_queue(), 
^{ 
    [self presentViewController:viewControllerToPresent 
        animated:YES 
       completion:nil]; 
}); 
+0

Điều này không hiệu quả đối với tôi. Có lẽ chủ đề chính đã bị chặn vì một số lý do ngăn cản việc chuyển đổi xảy ra? hoặc nút nào đó bị vô hiệu hóa? – TWilly

+0

điều này thật lạ - bởi vì tôi thấy chủ đề chính khi có mặt, nhưng mã của bạn giúp tôi – sacred

+2

http://openradar.appspot.com/19563577 – sacred

1

tôi tìm thấy giải pháp (workaround) trong cuộc thảo luận here, tác giả - tamas.zahola

[self presentViewController:myViewController animated:YES completion:nil]; 
dispatch_async(dispatch_get_main_queue(), ^{}); // <--- this line 
Các vấn đề liên quan