Custom Page Transition di iOS App
Pernah tidak teman-teman bertanya bagaimana transisi halaman pada aplikasi iOS di buat ? atau bagaimana cara membuat custom transisi halaman di aplikasi iOS.
Oke kali ini saya mencoba berbagi pengalaman mengenai implementasi User Interface pada aplikasi iOS.
Dalam membuat custom transisi di aplikasi iOS ada beberapa Alat dan Bahan yang perlu dipahami :). Antara lain :
UIPresentationController An object that manages the transition animations and the presentation of view controllers onscreen.
Sesuai dengan arti bahasa inggris nya UIPresentationController adalah sebuah objek yang mengatur transisi animasi dan presentasi sebuah view controller pada layar. Oke selanjutnya frameOfPresentedViewInContainerView
frameOfPresentedViewInContainerView Position of the presented view in the container view by the end of the presentation transition.
frameOfPresentedViewInContainerView adalah variable pada class UIPresentationController, frameOfPresentedViewInContainerView digunakan untuk mengatur posisi halaman yang ditampilkan pada halaman container setelah transisi selesai atau singkatnya posisi dan ukuran akhir sebuah halaman, Apakah halaman akan menutupi seluruh area layar atau hanya sebagian dari seluruh permukaan layar. Pada variable ini kita juga bisa mengubah container frame sehingga presenting viewcontroller masih bisa kita aksess walaupun sedang mempresent page baru.
containerViewWillLayoutSubviews atau containerViewDidLayoutSubviews
seperti biasanya layout subviews digunakan untuk mengubah atau ngadaptasi ukuran dan letak view sesuai dengan tipe device nya, jika kita menggunakan auto layout kita tidak perlu me override method ini akan tetapi jika view yang kita implementasi tidak sesuai dengan keinginan kita kita bisa melakukan pengaturan dengan me override fungsi ini.
Pada protocol UIPresentationController ini kita juga bisa menambahkan gesture ataupun overlay view sehingga pada view presenting dan presented kita tidak perlu megaturnya kembali.
UIViewControllerAnimatedTransitioning A set of methods for implementing the animations for a custom view controller transition.
Nah …ini merupakan protocol utama untuk membuat suatu custom transisi, pada protocol ini disediakan beberapa method yang digunakan untuk mengatur waktu transisi, bagaimana posisi atau letak suatu view ketika terjadi transisi.
func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? Asks your delegate for the custom presentation controller to use for managing the view hierarchy when presenting a view controller.
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval Asks your animator object for the duration (in seconds) of the transition animation.
Sesuai penjelasan diatas method ini digunakan untuk mengatur waktu transisi animasi
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) Tells your animator object to perform the transition animations.
Sedangkan yang ini digunakan untuk transform ukuran dan posisi view ketika terjadi transisi.
UIViewControllerTransitioningDelegate A set of methods that vend objects used to manage a fixed-length or interactive transition between view controllers.
Supaya view terjadi interactively kita butuh implementasi protocol ini tetapi kita harus mengubah implementasi pada UIPresentationController pada bagian method func panGesture(_ sender: UIPanGestureRecognizer) sehingga view tidak langsung terdismiss ketia gestur begin / dimulai.
func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? Asks your delegate for the transition animator object to use when presenting a view controller.
Method ini digunakan untuk mengubah state transisi sehingga method func animateTransition(using transitionContext: UIViewControllerContextTransitioning) tau kapan harus memanggil fungsi present atau dismiss.
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? Asks your delegate for the transition animator object to use when dismissing a view controller.
Method ini juga sama dengan method func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? hanya saja digunakan untuk mengubah state jadi .dismiss
func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? Asks your delegate for the interactive animator object to use when dismissing a view controller.
Oke kita masuk ke bagian cara penggunaan :