Swift - 启动画面放大淡出效果的实现1(使用launch image)
来源:互联网 发布:js校验非负正整数 编辑:程序博客网 时间:2024/06/06 15:01
Swift - 启动画面放大淡出效果的实现1(使用launch image)
在之前的文章中:Swift - 延长启动图片的显示时间(LaunchImage)。介绍了通过在 viewDidLoad 方法中添加个线程休眠,可以延长启动图片的显示时间。但时间一到,整个启动页面就会直接消失,略显生硬。
本文演示如何让启动画面消失的时候有动画效果。
1,效果图如下:
启动页面会放大淡出直至消失,整个过渡渐变更加自然。
2,实现原理:
我们知道启动页通常有两种方式实现。一种是使用 LaunchImage 来设置,另一种是使用 LaunchScreen.storyboard。
不管哪种方式,我们都不能直接在它上面做动画。我们可以在程序载入后,往页面上再添加一个同启动页一样的视图。由于内容一样,时间又衔接在一起,用户看不出其实启动页面已经被替换掉。
最后,我们在新添加的视图上做动画即可。
3,本文先介绍使用LaunchImage实现启动图片的情况:
下图可以看出,我们已经在 Assets.xcassets 文件中添加了适应各种设备的启动图片。
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import
UIKit
class
ViewController
:
UIViewController
{
override
func
viewDidLoad() {
super
.viewDidLoad()
//播放启动画面动画
launchAnimation()
}
//播放启动画面动画
private
func
launchAnimation() {
let
statusBarOrientation =
UIApplication
.sharedApplication().statusBarOrientation
if
let
img = splashImageForOrientation(statusBarOrientation,
size:
self
.view.bounds.size) {
//获取启动图片
let
launchImage =
UIImage
(named: img)
let
launchview =
UIImageView
(frame:
UIScreen
.mainScreen().bounds)
launchview.image = launchImage
//将图片添加到视图上
//self.view.addSubview(launchview)
let
delegate =
UIApplication
.sharedApplication().delegate
let
mainWindow = delegate?.window
mainWindow!!.addSubview(launchview)
//播放动画效果,完毕后将其移除
UIView
.animateWithDuration(1, delay: 1.5, options: .
BeginFromCurrentState
,
animations: {
launchview.alpha = 0.0
launchview.layer.transform =
CATransform3DScale
(
CATransform3DIdentity
, 1.5, 1.5, 1.0)
}) { (finished)
in
launchview.removeFromSuperview()
}
}
}
//获取启动图片名(根据设备方向和尺寸)
func
splashImageForOrientation(orientation:
UIInterfaceOrientation
, size:
CGSize
) ->
String
?{
//获取设备尺寸和方向
var
viewSize = size
var
viewOrientation =
"Portrait"
if
UIInterfaceOrientationIsLandscape
(orientation) {
viewSize =
CGSizeMake
(size.height, size.width)
viewOrientation =
"Landscape"
}
//遍历资源库中的所有启动图片,找出符合条件的
if
let
imagesDict =
NSBundle
.mainBundle().infoDictionary {
if
let
imagesArray = imagesDict[
"UILaunchImages"
]
as
? [[
String
:
String
]] {
for
dict
in
imagesArray {
if
let
sizeString = dict[
"UILaunchImageSize"
],
let
imageOrientation = dict[
"UILaunchImageOrientation"
] {
let
imageSize =
CGSizeFromString
(sizeString)
if
CGSizeEqualToSize
(imageSize, viewSize)
&& viewOrientation == imageOrientation {
if
let
imageName = dict[
"UILaunchImageName"
] {
return
imageName
}
}
}
}
}
}
return
nil
}
override
func
didReceiveMemoryWarning() {
super
.didReceiveMemoryWarning()
}
}
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1246.html
0 0
- Swift - 启动画面放大淡出效果的实现1(使用launch image)
- Swift - 启动画面放大淡出效果的实现1(使用launch image)
- 如何在VC中实现淡入淡出的启动画面
- VC中用简易方法实现淡入淡出的启动画面
- VC中用简易方法实现淡入淡出的启动画面
- 中用简易方法实现淡入淡出的启动画面
- iOS 启动页放大淡出效果
- 淡入淡出启动画面的制作
- 【iOS开发】使用Xcode8 添加Launch Image(启动图片)
- iOS开发---使用Xcode8 添加Launch Image(启动图片)
- 使用UICollectionView实现一个列表头部拉伸效果(下拉放大)(OC 和 Swift)
- MFC 中实现窗口淡入淡出、逐步放大显示效果
- MFC 中实现窗口淡入淡出、逐步放大显示效果
- 设计DirectX游戏开头画面淡入淡出的效果
- Unity 启动画面淡入淡出
- Unity 启动画面淡入淡出
- Unity 启动画面淡入淡出
- 使用C#实现Form窗体的淡入淡出效果
- Web项目实现通过经纬度获取城市信息---利用百度地图
- jquery全国省市县三级联动
- Java线程:线程的同步-同步方法
- Error:The method setInputPaths(JobConf, String) in the type FileInputFormat is not
- 微信公众平台开发教程(三) 基础框架搭建
- Swift - 启动画面放大淡出效果的实现1(使用launch image)
- C语言 信号处理机制
- arcgis中的标注和注记
- 解决JS弹出新窗口被浏览器阻止的解决方案
- request如何获取请求路径方法
- make otapackage错误:OSError [Error 2]No such file or directory
- 了解这6件脑洞大开的物联网设备,智能城市不再遥远
- SMT车间夜班管理制度
- mysql数据库设计(一)