Custom-uiviewcontroller-transitions
iOS cung cấp một số view controller transitions tốt - push, pop, cover vertically - miễn phí. bên cạnh đó cũng ta cũng có thể tự custom cho riêng mình. custom view controller transitions có thể nâng cao đáng kể trải nghiệm của người dùng và đặt ứng dụng của bạn ngoài phần còn lại của gói. Nếu trước ...
iOS cung cấp một số view controller transitions tốt - push, pop, cover vertically - miễn phí. bên cạnh đó cũng ta cũng có thể tự custom cho riêng mình. custom view controller transitions có thể nâng cao đáng kể trải nghiệm của người dùng và đặt ứng dụng của bạn ngoài phần còn lại của gói. Nếu trước kia bạn tránh custom view controller transitions vì quá trình này có vẻ quá khó khăn, thì bây giờ bạn sẽ thấy rằng nó không khó như bạn nghĩ.
Trong hướng dẫn này, bạn sẽ thêm một số chuyển tiếp UIViewController tùy chỉnh vào một ứng dụng trò chơi đoán nhỏ. Khi bạn hoàn thành, bạn sẽ học được:
- Cách API chuyển đổi được cấu trúc.
- Làm thế nào để present và dismiss view controller bằng cách sử dụng custom transitions
- Làm thế nào để xây dựng quá trình chuyển đổi tương tác.
đầu tiên hãy down project sau về và chạy thử bạn sẽ thấy
Ứng dụng hiển thị một số thẻ trong bộ điều khiển chế độ xem trang. Mỗi thẻ cho thấy một mô tả của một con vật cưng và khai thác một thẻ cho thấy vật nuôi nó mô tả. tuy logic điều hướng đã có sẵn nhưng ứng dụng hiện đang cảm thấy khá nhạt nhẽo. Chúng ta sẽ custom lại nó.
Transitioning API là tập hợp các giao thức. Điều này cho phép bạn thực hiện lựa chọn triển khai tốt nhất cho ứng dụng của mình: sử dụng các đối tượng hiện có hoặc tạo các đối tượng được xây dựng nhằm mục đích quản lý quá trình chuyển đổi của bạn. Đến cuối phần này, bạn sẽ hiểu trách nhiệm của từng giao thức và các kết nối giữa chúng. Sơ đồ dưới đây cho bạn thấy các thành phần chính của API:
The Pieces of the Puzzle
Mặc dù biểu đồ trông phức tạp, những sẽ khá đơn giản khi bạn hiểu cách các phần khác nhau hoạt động cùng nhau.
Transitioning Delegate
Mỗi view controller đều có thể có một transitioning Delegate, một đối tượng phù hợp với UIViewControllerTransitioningDelegate. Bất cứ khi nào bạn present hoặc dismiss một view controller, UIKit sẽ yêu cầu transitioning Delegate của nó cho animation controller để sử dụng. Để thay thế một hoạt ảnh mặc định bằng hoạt ảnh tùy chỉnh của riêng bạn, bạn phải triển khai một Transitioning Delegate và cho phép nó trả về animation controller thích hợp.
Animation Controller
animation controller được trả về bởi transitioning delegate là một đối tượng thực hiện UIViewControllerAnimatedTransitioning. Nó thực hiện "“heavy lifting" của việc thực hiện chuyển tiếp hoạt cảnh.
Transitioning Context
Các đối tượng transitioning delegate thực hiện UIViewControllerContextTransitioning và đóng một vai trò quan trọng trong quá trình chuyển đổi: nó đóng gói thông tin về các khung nhìn và các bộ điều khiển xem có liên quan đến quá trình chuyển đổi. Như bạn thấy trong biểu đồ, bạn không tự triển khai giao thức này. UIKit tạo và cấu hình ngữ cảnh chuyển tiếp cho bạn và chuyển nó vào animation controller của bạn mỗi lần xảy ra quá trình chuyển đổi.
The Transitioning Process
Dưới đây là các bước liên quan đến presentation transition::
- Bạn kích hoạt transition thông qua một segue hay lập trình
- UIKit yêu cầu view controller tới cho transitioning delegate của nó. Nếu nó không có, UIKIt sử dụng chuyển tiếp chuẩn, tích hợp sẵn.
- UIKit sau đó yêu cầu các transitioning delegate cho một animation controller thông qua animationController(forPresented:presenting:source:).. Nếu trả về nil, quá trình chuyển đổi sẽ sử dụng hoạt ảnh mặc định.
- UIKit xây dựng bối cảnh chuyển đổi.
- UIKit hỏi bộ điều khiển hoạt ảnh trong suốt thời gian hoạt ảnh của nó bằng cách gọi** transitionDuration(using:)**
- UIKit gọi animateTransition(using:) trên bộ điều khiển hoạt ảnh để thực hiện hoạt ảnh cho quá trình chuyển đổi.
- Cuối cùng, bộ điều khiển hoạt ảnh gọi hàm completeTransition(_