如今,大多数很棒的iOS应用程序都具有动画,但是添加丰富的动画可能很尴尬。我很高兴Airbnb的图书馆lottie-ios非常简单易用。
什么是彩票?
彩票
Airbnb发布的动画库,它将使用Adobe After Effects创建的动画转换为json,按原样加载它们,并将其合并到应用程序(iOS,Android,React Native)中。在这里,我将不涉及创建json,而是关注iOS上显示的内容。这里有各种示例,因此我将尝试在此站点上使用它们。您可以轻松地将以下动画合并到您的应用中。 github上名为lottie-ios的库拥有将近10,000颗星(截至2017年8月17日为 9948 del> 2020年3月24日为19.2k),并且非常受欢迎。
安装
-
对于pod,将
pod 'lottie-ios' 添加到podfile和pod install 。 -
对于迦太基,将
github "airbnb/lottie-ios" "master" 添加到您的Cartfile和carthage update 中。完成链接框架和库的设置。
请注意,由于该库在Swift中使用,因此您需要将
LottieSample-Bridging-Header.h
1 2 3 4 5 6 | #ifndef LottieSample_Bridging_Header_h #define LottieSample_Bridging_Header_h #import <Lottie/Lottie.h> #endif /* LottieSample_Bridging_Header_h */ |
基本用法
从此处选择要尝试的动画文件,然后下载json文件。将下载的json文件添加到您的Xcode项目中。
这次我将放这个动画。我下载了它,将其命名为
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import UIKit import Lottie class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() showAnimation() } func showAnimation() { let animationView = AnimationView(name: "Animation") animationView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height) animationView.center = self.view.center animationView.loopMode = .loop animationView.contentMode = .scaleAspectFit animationView.animationSpeed = 1 view.addSubview(animationView) animationView.play() } } |
看起来像这样。
我想播放一次后将其擦除
重写为
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import UIKit import Lottie class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() showAnimation() } func showAnimation() { let animationView = AnimationView(name: "Animation") animationView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height) animationView.center = self.view.center animationView.loopMode = .loop animationView.contentMode = .scaleAspectFit animationView.animationSpeed = 1 view.addSubview(animationView) animationView.play { finished in if finished { animationView.removeFromSuperview() } } } } |
我想随时结束
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import UIKit import Lottie class ViewController: UIViewController { lazy var loadingView: AnimationView = { let animationView = AnimationView(name: "Animation") animationView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height) animationView.center = self.view.center animationView.loopMode = .loop animationView.contentMode = .scaleAspectFit animationView.animationSpeed = 1 return animationView }() override func viewDidLoad() { super.viewDidLoad() } // 好きなタイミングでこれを呼ぶとアニメーションが始まる. func startLoading() { view.addSubview(loadingView) loadingView.play() } // 好きなタイミングでこれを呼ぶとアニメーションのViewが消える. func stopLoading() { loadingView.removeFromSuperview() } //// APIコールとかでstartLoading(), stopLoading()を呼ぶ. } |
摘要
我在GitHub上发布了它。
自己花费一些时间从json创建,但是已经上传的动画易于合并且有趣。请玩。