Project Icon

Hero

声明式iOS视图过渡动画库

Hero是一个简化iOS视图过渡动画开发的开源库。它通过声明式API封装了UIKit的复杂过渡接口,支持自动视图匹配、自定义动画和交互控制。Hero适用于多种布局和UI组件,提供类似Keynote Magic Move的效果,并基于Material Design原则自动调整动画时长。这个库让开发者能够轻松创建流畅优雅的视图切换效果。

Hero 是一个用于构建 iOS 视图控制器转场的库。它在 UIKit 繁琐的转场 API 之上提供了一个声明性层,使自定义转场成为开发者的简单任务。

Carthage compatible Accio supported codecov Version License Xcode 10.0+ iOS 10.0+ Swift 4.0+ 中文 README Donate

Unit Test Swift PM

      

Hero 类似于 Keynote 的神奇移动功能。它检查所有源视图和目标视图上的 heroID 属性。然后,每对匹配的视图都会自动从旧状态转换到新状态。

Hero 还可以为不匹配的视图构建动画。通过 heroModifiers 属性可以轻松定义这些动画。Hero 将与神奇移动动画一起运行这些动画。所有这些动画都可以通过用户手势交互控制

在视图控制器级别,Hero 提供了几个模板转场,你可以通过 heroModalAnimationTypeheroNavigationAnimationTypeheroTabBarAnimationType 设置。这些可以作为自定义转场的基础。结合 heroIDheroModifiers 来创建你自己独特的转场。

      

默认情况下,Hero 根据Material Design Motion Guide提供动态持续时间。持续时间根据距离和大小的变化自动确定,为你省去麻烦,同时提供一致且令人愉悦的动画。

Hero 不对视图的构建或结构做任何假设。除了在动画期间隐藏它们之外,它不会修改任何视图的状态。这使得它可以与Auto Layout程序化布局UICollectionView(无需修改其布局对象)、UITableViewUINavigationControllerUITabBarController等一起使用。

使用示例 1

视图控制器 1

redView.hero.id = "ironMan"
blackView.hero.id = "batMan"

视图控制器 2

self.hero.isEnabled = true
redView.hero.id = "ironMan"
blackView.hero.id = "batMan"
whiteView.hero.modifiers = [.translate(y:100)]

使用示例 2

视图控制器 1

greyView.hero.id = "skyWalker"

视图控制器 2

self.hero.isEnabled = true
greyView.hero.id = "skyWalker"

// collectionView 是所有红色单元格的父视图
collectionView.hero.modifiers = [.cascade]
for cell in redCells {
    cell.hero.modifiers = [.fade, .scale(0.5)]
}

你也可以在故事板中完成这些操作!

安装

CocoaPods

在你的 Podfile 中添加以下条目:

pod 'Hero'

然后运行 pod install

别忘了在每个你想使用 Hero 的文件中 import Hero

Carthage

在你的 Cartfile 中添加以下条目:

github "HeroTransitions/Hero"

然后运行 carthage update

如果这是你第一次在项目中使用 Carthage,你需要按照 Carthage 的说明 进行一些额外的步骤。

Accio

在你的 Package.swift 中添加以下内容:

.package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.4.0")),

接下来,将 Hero 添加到你的 App 目标依赖中,如下所示:

.target(
    name: "App",
    dependencies: [
        "Hero",
    ]
),

然后运行 accio update

Swift Package Manager

要使用 Apple 的 Swift 包管理器进行集成,将以下内容作为依赖项添加到你的 Package.swift

.package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.3.0"))

然后在你希望使用 Hero 的 Target 中将 "Hero" 指定为依赖项。 这里有一个 PackageDescription 的示例:

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "MyPackage",
    products: [
        .library(
            name: "MyPackage",
            targets: ["MyPackage"]),
    ],
    dependencies: [
        .package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.6.3"))
    ],
    targets: [
        .target(
            name: "MyPackage",
            dependencies: ["Hero"])
    ]
)

手动安装

  • Sources 文件夹拖到你的项目中的任何位置。

文档

查看 WIKI 页面(使用指南) 获取文档。

要获取更新的文档,请查看头文件注释。(在 Xcode 中使用 alt+click

Dash 兼容的 API 文档:https://HeroTransitions.github.io/Hero/

交互式转场教程

使用 Hero 进行交互式转场(第 1 部分)

常见问题

即使设置了 self.hero.isEnabled = true,也无法使用 Hero 转场

确保在导航控制器上也设置了 self.hero.isEnabled = true,如果你在导航控制器内进行推送/弹出操作。

转场期间视图被其他匹配的视图覆盖

匹配的视图默认使用全局坐标空间,而不匹配的视图默认使用局部坐标空间。使用局部坐标空间的视图可能被其他使用全局坐标空间的视图覆盖。要解决这个问题,请在被覆盖的视图上使用 useGlobalCoordinateSpace 修饰符。详情请查看 坐标空间 Wiki 页面

推送动画与我的自定义动画一起显示

这是 Hero 为导航控制器提供的默认动画。要禁用推送动画,请在导航控制器上将 self.hero.navigationAnimationType 设置为 .fade.none

如何在关闭时使用不同的默认动画

你可以使用动画类型 .selectBy(presenting:dismissing) 来为关闭指定不同的默认动画。

例如:

    self.hero.modalAnimationType = .selectBy(presenting:.zoom, dismissing:.zoomOut)

贡献

我们欢迎任何贡献。请阅读 贡献指南

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号