Tôi có chuyển đổi đẩy tùy chỉnh giữa các bộ điều khiển chế độ xem được nhúng trong UINavigationController
.Chuyển đổi tùy chỉnh cho hoạt ảnh đẩy với NavigationController trên iOS 9
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
[transitionContext.containerView addSubview:toViewController.view];
...
Sau đó, nó tiếp tục và thực hiện hoạt ảnh. Vấn đề là nội dung của toViewController
, mặc dù nó đang sử dụng đúng hướng dẫn bố trí tự động bố trí trên cùng bên phải, trình bày nội dung đằng sau thanh điều hướng.
Tuy nhiên, nó hoạt động tốt trên iOS 8 và nếu chúng tôi buộc vẽ lại (ví dụ: gửi ứng dụng lên nền và đưa nó trở lại, hiển thị phương thức ở trên cùng và loại bỏ nó, v.v.) sẽ gây ra toàn bộ hệ thống bố cục tự động để vẽ lại chính nó và chế độ xem của toViewController
nhảy tới đúng vị trí (như là hướng dẫn bố cục hàng đầu, x pixel từ thanh điều hướng thay vì x pixel từ đầu màn hình của thiết bị).
Thêm
[self.view setNeedsUpdateConstraints];
[self.view layoutIfNeeded];
trình nếu đặt trong viewDidAppear:animated
, nhưng không hoạt động trên viewDidLoad
hoặc viewWillAppear:animated
. Đây không phải là một giải pháp như người dùng sẽ thấy nhảy xem khi vẽ lại đang xảy ra tại viewDidAppear:animated
Lifesaver, cảm ơn bạn đời – beebcon
Bạn vừa lưu tôi rất nhiều giờ. Cảm ơn rất nhiều! –