2017-06-04 16 views
5

Tôi có bộ điều khiển xem bộ chứa và bộ điều khiển xem con (Tương tự như UITabViewController). Khi chuyển đổi giữa quan điểm của một bộ điều khiển xem đứa trẻ và xem một cái nhìn khiển của con, tôi đang sử dụng:Thay đổi kích thước chuyển tiếp SubView sau khi chuyển đổi

let oldView = // get reference to old view 
let newView = // get reference to new view 
UIView.transition(from: oldView!, to: newView!, duration: 0.3, 
        options: .transitionCrossDissolve, completion: nil) 

Vấn đề ở đây, đó là việc thay đổi kích thước của newView xảy ra sau khi các hình ảnh động chuyển tiếp hoàn thành, trông khó coi.

Hành vi xấu này chỉ xảy ra khi bộ điều khiển xem trẻ mới được tải lần đầu tiên. Dường như phương thức viewDidLayoutSubviews chỉ được gọi sau khi chuyển đổi.

Làm cách nào để thay đổi kích thước của khung nhìn mới TRƯỚC KHI quá trình chuyển đổi chứ không phải sau đó.

Cảm ơn trước.

+0

Việc chuyển đổi bản thân hoạt động tốt với Auto Layout. Tôi vừa thử nghiệm điều đó. Bạn cần hiển thị thêm mã của mình - đặc biệt là mã nơi bạn thêm và thiết lập (các) trình điều khiển xem con. – Mischa

+0

Làm cách nào để thay đổi kích thước khung nhìn của trình điều khiển chế độ xem con (mới) để phù hợp với kích thước của vùng chứa? – Mischa

+0

bạn đã thử ghi đè 'func viewWillTransition (với kích thước: CGSize, với điều phối viên: UIViewControllerTransitionCoordinator)' và thêm sự chuyển đổi của bạn bên trong nó? –

Trả lời

2

trong ViewController override func viewWillTransition của bạn để nó sẽ là một cái gì đó như thế này

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    let oldView = // get reference to old view 
let newView = // get reference to new view 
UIView.transition(from: oldView!, to: newView!, duration: 0.3, 
        options: .transitionCrossDissolve, completion: nil) 

} 
+1

đừng quên, rằng phương pháp này cũng sẽ được gọi nếu màn hình quay thành chế độ ngang hoặc dọc. –

+0

cảm ơn vì cảnh báo, tôi nên đề cập đến điều đó. –

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