MoviaBox/ShortPlay/Thirdparty/JXTransition/JXPopAnimatedTransition.swift
2025-04-09 18:24:58 +08:00

73 lines
2.6 KiB
Swift

//
// JXPopAnimatedTransition.swift
// Test
//
// Created by on 2022/10/10.
//
import UIKit
class JXPopAnimatedTransition: JXBaseAnimatedTransition {
override func animateTransition() {
guard let fromView = self.fromViewController?.view else { return }
var toView = self.toViewController?.view
if toView == nil { return }
self.containerView?.insertSubview(toView!, belowSubview: fromView)
let size = self.containerView?.bounds.size ?? .zero
self.isHideTabBar = (self.toViewController?.tabBarController != nil) && (self.fromViewController?.hidesBottomBarWhenPushed == true) && (self.toViewController?.jx_captureImage != nil)
if self.isHideTabBar {
let captureView = UIImageView(image: self.toViewController?.jx_captureImage!)
captureView.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
self.containerView?.insertSubview(captureView, belowSubview: fromView)
toView = captureView
self.toViewController?.view.isHidden = true
self.toViewController?.tabBarController?.tabBar.isHidden = true
}
self.contentView = toView
fromView.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
toView!.frame = CGRect(x: -(0.3 * size.width), y: 0, width: size.width, height: size.height)
fromView.layer.shadowColor = UIColor.black.cgColor
fromView.layer.shadowOpacity = 0.15
fromView.layer.shadowRadius = 3.0
UIView.animate(withDuration: animationDuration(), delay: 0, options: .curveEaseInOut) {
fromView.frame = CGRect(x: size.width, y: 0, width: size.width, height: size.height)
if #available(iOS 11.0, *) {
toView!.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
}else {
toView!.transform = .identity
}
} completion: { finish in
if self.isHideTabBar {
if self.contentView != nil {
self.contentView?.removeFromSuperview()
self.contentView = nil
}
self.toViewController?.view.isHidden = false
if self.toViewController?.navigationController?.children.count == 1 {
self.toViewController?.tabBarController?.tabBar.isHidden = false
}
}
self.completeTransition()
}
}
}