Chuyển đổi bản trình bày phương thức tùy chỉnh – Hoạt hình mờ dần

Tram Ho

Môi trường phát triển:

  • Swift Language Version: Swift 5.0
  • Xcode: Version 10.2.1
  • Deployment Target: 12.0

UIKit cho phép tuỳ chỉnh view controller’s presentation thông qua UIViewControllerAnimatedTransitioning delegate với hai function chính:

  • transitionDuration(using: ): Hàm lấy thông tin về thời gian diễn ra transition animations. Giá trị trả về phải giống với giá trị bạn sử dụng để config animations trong hàm animateTransition(using: ).
  • animateTransition(using: ): Hàm cho phép config transition animations và được gọi khi presenting hoặc dismissing view controller.

Bước 1: Khởi tạo màn hình

Bước 2: Fade Animation Transition

Ta tạo class FadeAnimationController và áp dụng thực thi UIViewControllerAnimatedTransitioning.

Trong đó:

  • fromView: là view xuất hiện ở phần mở đầu của transition, hoặc ở phần kết thúc của canceled transition. Ví dụ khi presenting thì fromView là view của viewController1, còn khi dismissing thì fromView là view của viewController2.
  • toView: là view xuát hiện ở phần kết thúc của completed transition.
  • container: hoạt động như một superview chứa các views tham gia vào transition.
  • presenting: biến Bool thể hiện kiểu transition (true khi đang presenting và false khi đang dismissing).
  • completeTransition(): Hàm thông báo cho system rằng transition animation đã hoàn thành.

Bước 3: Custom Navigation Controller

Ta tạo class TransitionDelegate và áp dụng thực thi UIViewControllerTransitioningDelegate.

Trong đó:

  • animationController(forPresented presented: ): hàm trả về object thực thi animation transition khi present.
  • animationController(forDismissed dismissed: ): hàm trả về object thực thi animation transition khi dismiss.

Bước 4: ViewController và ViewController2

Ta khởi tạo đối tượng transitionDelegate và gán delegate cho 2 viewController.

Kết quả:

Tài liệu tham khảo:

https://itnext.io/learn-ios-custom-view-controller-animation-transition-once-for-all-9db80ad447e

https://www.raywenderlich.com/2925473-ios-animation-tutorial-custom-view-controller-presentation-transitions

Link github:

https://github.com/oNguyenDucHuyB/CustomTransitionVC/tree/modalTransition

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo