Swift - 启动画面放大淡出效果的实现2(使用LaunchScreen.storyboard)
在前文中:Swift - 启动画面放大淡出效果的实现1(使用launch image)。演示了如何让启动画面消失的时候有动画效果。当时是使用 launch image 来实现启动图片。本文演示在使用 LaunchScreen.storyboard 作为启动画面的情况下,如何实现同样的过渡效果。
1,效果图如下:
启动页面同样会放大淡出直至消失。

2,实现原理:
我们知道启动页通常有两种方式实现。一种是使用 LaunchImage 来设置,另一种是使用 LaunchScreen.storyboard。
不管哪种方式,我们都不能直接在它上面做动画。我们可以在程序载入后,往页面上再添加一个同启动页一样的视图。由于内容一样,时间又衔接在一起,用户看不出其实启动页面已经被替换掉。
最后,我们在新添加的视图上做动画即可。
3,本文介绍使用LaunchScreen.storyboard实现启动页的情况:
(1)App默认情况下,就是以 LaunchScreen.storyboard 作为启动界面。作为演示,我们先在上面添加一些组件。

(2)在 LaunchScreen.storyboard 中将 Storyboard ID 设置为 launch
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//播放启动画面动画
launchAnimation()
}
//播放启动画面动画
private func launchAnimation() {
//获取启动视图
let vc = UIStoryboard(name: "LaunchScreen", bundle: nil)
.instantiateViewController(withIdentifier: "launch")
let launchview = vc.view!
let delegate = UIApplication.shared.delegate
delegate?.window!!.addSubview(launchview)
//self.view.addSubview(launchview) //如果没有导航栏,直接添加到当前的view即可
//播放动画效果,完毕后将其移除
UIView.animate(withDuration: 1, delay: 1.5, options: .beginFromCurrentState,
animations: {
launchview.alpha = 0.0
let transform = CATransform3DScale(CATransform3DIdentity, 1.5, 1.5, 1.0)
launchview.layer.transform = transform
}) { (finished) in
launchview.removeFromSuperview()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
4,源码下载

谢谢站长!但是, 内置的启动页怎么通过代码替换我下载下来的图片呢? 启动页我是通过LaunchImage设置的.
还有一个问题请教 就是内置的启动页怎么取消呢?意思就是我不要启动页该怎么办呢
想请教一个问题 我该怎么在启动页中加载服务器图片呢? 如果按照你这样的设计 默认的启动页空白时间怎么取消呢?
漂亮!
有个问题:根据你的其他文章,做了一个引导页,如果之前引导页也要这个效果的话,引导页完后进入主界面又回重新进入启动页。请问这种情况怎么解决呢?
航哥, 为什么启动效果直接对ViewController无效? 要在viewController添加一个NavgationController才有效?
为什么会出现闪屏呢?