AZTransitions

API 只需一种方法即可制作出色的自定义过渡效果。「API to make great custom transitions in one method」

Github星跟踪图

AZTransitions

CocoaPods Compatible
Carthage Compatible
SPM Compatible
Platform
Twitter
GitHub license

Make your modal transition with custom animation.
AZTransitions helps you think about creativity, giving specific API methods.

Visual Example

Inside this repository you can try iOS Example target with example FashionTransition.swift class:

Animation example

Installation

  • Add the following to your Podfile and run pod install
pod 'AZTransitions'
  • or add the following to your Cartfile and run carthage update
github "azimin/AZTransitions"
dependencies: [
    .package(url: "https://github.com/azimin/AZTransitions.git", .upToNextMajor(from: "0.26.0"))
]
  • or clone as a git submodule,

  • or just copy AZTransitions/Source/CustomModalTransition.swift into your project.

Code Example

To create any custom transition just subclass CustomModalTransition:

class FashionTransition: CustomModalTransition { 
  override init() {
    super.init(duration: 0.5)
  }
}

--

Then set as az_modalTransition to nessesary view just before presenting it

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  segue.destination.customModalTransition = FashionTransition()
}

or

func show() {
  let viewController = UIViewController()
  viewController.customModalTransition = FashionTransition()
  self.present(viewController, animated: true, completion: nil)
}

--

To have custom present animation, just implement performTransition(interactive: Bool) inside your FashionTransition class:

func performTransition(interactive: Bool) {
  self.presentedViewController.view.alpha = 0.0
    
  UIView.animate(withDuration: duration, animations: {
    self.presentedViewController.view.alpha = 1.0
    self.presentingViewController.view.alpha = 0.0
  }, completion: { (completed) in
    self.presentingViewController.view.alpha = 1.0
    self.finishAnimation(completion: nil)
  })
}

As you may have guessed, you have different properties. The main ones:

  • duration — transition duration
  • presentingViewController — the presenting view controller (bottom one)
  • presentedViewController — view controller that is going to be presented (top one)

You can animate them as you want.

🔥IMPORTANT🔥 don't forget to call finishAnimation(completion: nil) in the end.

In this case animation will be:

Animation code example

UIModalPresentationStyle

Of course sometimes you want to use diffenret modal presentation styles (for example overCurrentContext), in this case you can call setCustomModalTransition(customModalTransition: CustomModalTransition, inPresentationStyle: UIModalPresentationStyle) of UIViewController instead of setting customModalTransition directly.

More

You have different properties and methods to help you:

  • performDismissingTransition(interactive: Bool) to implement custom transition animation when dismissing
  • fromViewController/toViewController in term of Apple transition. They are reversed in presenting and dismissing transitions.
  • transitionContainerView view where the transition takes place (resentingViewController.view and presentedViewController.view located on inside transitionContainerView), so you can add your custom views here to make animation more interesting (see iOS Example)
  • Some methods for interactive animations (example will be added be soon)
  • Some method to work with orientation changing things (example will be added be soon)

主要指标

概览
名称与所有者azimin/AZTransitions
主编程语言Swift
编程语言Ruby (语言数: 3)
平台
许可证MIT License
所有者活动
创建于2016-11-02 16:52:18
推送于2021-02-17 07:28:29
最后一次提交2021-02-17 10:27:40
发布数7
最新版本名称0.26.0 (发布于 2021-02-17 10:28:26)
第一版名称0.1 (发布于 2016-11-02 21:40:38)
用户参与
星数412
关注者数11
派生数34
提交数28
已启用问题?
问题数3
打开的问题数1
拉请求数7
打开的拉请求数0
关闭的拉请求数1
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?