ImagePreviewTransitionAnimator
@MainActor
open class ImagePreviewTransitionAnimator : NSObject, UIViewControllerAnimatedTransitioning
负责处理 ImagePreviewController 被 present/dismiss 时的动画,如果需要自定义动画效果,可按需修改 animationEnteringBlock、animationBlock、animationCompletionBlock。
-
当前图片预览控件的引用,在为 ImagePreviewController.transitioningAnimator 赋值时会自动建立这个引用关系
Declaration
Swift
@MainActor open weak var imagePreviewViewController: ImagePreviewController?
-
转场动画的持续时长,默认为 0.25
Declaration
Swift
@MainActor open var duration: TimeInterval
-
当 sourceImageView 本身带圆角时,动画过程中会通过这个 layer 来处理圆角的动画
Declaration
Swift
@MainActor open lazy var cornerRadiusMaskLayer: CALayer { get set }
-
动画开始前的准备工作可以在这里做
animator 当前的动画器 animator isPresenting YES 表示当前正在 present,NO 表示正在 dismiss style 当前动画的样式 sourceImageRect 原界面上显示图片的 view 在 imagePreviewViewController.view 坐标系里的 rect,仅在 style 为 zoom 时有值,style 为 fade 时为 CGRectZero zoomImageView 当前图片 transitionContext 转场动画的上下文,可通过它获取前后界面、动画容器等信息
Declaration
Swift
@MainActor open var animationEnteringBlock: (@MainActor @Sendable (_ animator: ImagePreviewTransitionAnimator, _ isPresenting: Bool, _ style: ImagePreviewTransitioningStyle, _ sourceImageRect: CGRect, _ zoomImageView: ZoomImageView, _ transitionContext: UIViewControllerContextTransitioning?) -> Void)?
-
转场时的实际动画内容,整个 block 会在一个 UIView animation block 里被调用,因此直接写动画内容即可,无需包裹一个 animation block
animator 当前的动画器 animator isPresenting YES 表示当前正在 present,NO 表示正在 dismiss style 当前动画的样式 sourceImageRect 原界面上显示图片的 view 在 imagePreviewViewController.view 坐标系里的 rect,仅在 style 为 zoom 时有值,style 为 fade 时为 CGRectZero zoomImageView 当前图片 transitionContext 转场动画的上下文,可通过它获取前后界面、动画容器等信息
Declaration
Swift
@MainActor open var animationBlock: (@MainActor @Sendable (_ animator: ImagePreviewTransitionAnimator, _ isPresenting: Bool, _ style: ImagePreviewTransitioningStyle, _ sourceImageRect: CGRect, _ zoomImageView: ZoomImageView, _ transitionContext: UIViewControllerContextTransitioning?) -> Void)?
-
动画结束后的事情,在执行完这个 block 后才会调用 [transitionContext completeTransition:]
animator 当前的动画器 animator isPresenting YES 表示当前正在 present,NO 表示正在 dismiss style 当前动画的样式 sourceImageRect 原界面上显示图片的 view 在 imagePreviewViewController.view 坐标系里的 rect,仅在 style 为 zoom 时有值,style 为 fade 时为 CGRectZero zoomImageView 当前图片 transitionContext 转场动画的上下文,可通过它获取前后界面、动画容器等信息
Declaration
Swift
@MainActor open var animationCompletionBlock: (@MainActor @Sendable (_ animator: ImagePreviewTransitionAnimator, _ isPresenting: Bool, _ style: ImagePreviewTransitioningStyle, _ sourceImageRect: CGRect, _ zoomImageView: ZoomImageView, _ transitionContext: UIViewControllerContextTransitioning?) -> Void)?
-
动画回调句柄,动画开始和结束时调用
animator 当前的动画器 animator isPresenting YES 表示当前正在 present,NO 表示正在 dismiss isFinished YES 表示动画结束,NO 表示动画开始
Declaration
Swift
@MainActor open var animationCallbackBlock: (@MainActor @Sendable (_ animator: ImagePreviewTransitionAnimator, _ isPresenting: Bool, _ isFinished: Bool) -> Void)?
-
Undocumented
Declaration
Swift
@MainActor override public init()
-
Undocumented
Declaration
Swift
@MainActor open func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
-
Undocumented
Declaration
Swift
@MainActor open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval