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才有效?
为什么会出现闪屏呢?