服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS实现动态元素的引导图效果

iOS实现动态元素的引导图效果

2021-02-02 15:22MajorLMJ IOS

这篇文章给大家介绍了iOS实现动态元素的引导图效果的步骤,文章给出了示例代码介绍的很详细,有需要的朋友们可以参考借鉴,下面来一起看看吧。

前言

最近越来越多的app,已经抛弃掉第一次进入的3-4页的导入页面,而是另外采取了在功能页面悬浮一个动态效果来展示相应的功能点。这个模块主要是实现app首次进入时显示的动态的引导图,在用户进行右滑或者左滑的时候,屏幕上的一些元素做出相应的隐藏消失以及位置移动。

实现效果:

iOS实现动态元素的引导图效果
图片资源来自网络,侵权即删

先来看看是如何使用的,然后再介绍相关的方法及属性

?
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
nsmutablearray * elementsdataarr = [[nsmutablearray alloc] init];
 
/* 动画元素的创建 */
lmjanimatedelement * element1 = [[lmjanimatedelement alloc] initwithimage:[uiimage imagenamed:@"umbrella"]];
element1.belongtoscreen = 0;      // 设置所属第几屏
element1.size    = cgsizemake(64, 64); // 元素大小
element1.startpoint  = cgpointmake(130, 420); // 元素在屏幕的起始点位置
element1.endpoint   = cgpointmake(130, 420); // 元素在屏幕的终点位置
element1.isgradient  = no;     // 是否淡入淡出
[elementsdataarr addobject:element1];
 
lmjanimatedelement * element2 = [[lmjanimatedelement alloc] initwithimage:[uiimage imagenamed:@"cocktail"]];
element2.belongtoscreen = 1;
element2.size    = cgsizemake(64, 64);
element2.startpoint  = cgpointmake(40, 350);
element2.endpoint   = cgpointmake(40, 480);
element2.isgradient  = yes;
[elementsdataarr addobject:element2];
 
lmjanimatedelement * element3 = [[lmjanimatedelement alloc] initwithimage:[uiimage imagenamed:@"flip_flops"]];
element3.belongtoscreen = 2;
element3.size    = cgsizemake(64, 64);
element3.startpoint  = cgpointmake(-70, 500);
element3.endpoint   = cgpointmake(190, 470);
element3.isgradient  = yes;
[elementsdataarr addobject:element3];
 
lmjanimatedelement * element4 = [[lmjanimatedelement alloc] initwithimage:[uiimage imagenamed:@"surfboard"]];
element4.belongtoscreen = 3;
element4.size    = cgsizemake(96, 96);
element4.startpoint  = cgpointmake(300, 440);
element4.endpoint   = cgpointmake(40, 440);
element4.isgradient  = no;
[elementsdataarr addobject:element4];
 
lmjanimatedelement * element5 = [[lmjanimatedelement alloc] initwithimage:[uiimage imagenamed:@"beach_chair"]];
element5.belongtoscreen = 4;
element5.size    = cgsizemake(64, 64);
element5.startpoint  = cgpointmake(320, 440);
element5.endpoint   = cgpointmake(220, 440);
element5.isgradient  = yes;
[elementsdataarr addobject:element5];
 
/* 模块的实现 */
_welcomeview = [[lmjdynamicwelcomeview alloc] initwithframe:cgrectmake(0, 0, [uiscreen mainscreen].bounds.size.height, [uiscreen mainscreen].bounds.size.height)];
// 设置动画元素
[_welcomeview setanimateditems:elementsdataarr];
// 设置背景图片,以及背景图片的尺寸,当图片尺寸超过屏幕宽度时,会自动计算背景图每屏的位移量,以致滑到最后一屏的时候,背景图移到最右端
[_welcomeview setbackgroundimage:[uiimage imagenamed:@"beach_bg.png"] size:cgsizemake(_welcomeview.frame.size.height/620.f*992.f, _welcomeview.frame.size.height)];
// 设置滑动屏数
[_welcomeview setanimatedpagecount:5];
 
[self.view addsubview:_welcomeview];

首先来看元素类,也就是在引导图上移动的元素 (lmjanimatedelement)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (lmjanimatedelement *)initwithimage:(uiimage *)image;
 
// - (lmjanimatedelement *)initwithtext:(nsstring *)text; // 该功能尚未实现,敬请期待...
 
@property (nonatomic,assign) nsinteger belongtoscreen; // 属于第几屏 (取值范围:0~...)
 
@property (nonatomic,assign) cgsize size; // 元素大小
 
@property (nonatomic,assign) cgpoint startpoint; // 动画起点
@property (nonatomic,assign) cgpoint endpoint; // 动画终点
 
@property (nonatomic,assign) bool isgradient; // 是否有渐变效果 当设置为yes时,动画元素只有在所属页跟随动画出现;当设置为no时,动画元素会一直在屏幕显示,只在其所属页移动
 
@property (nonatomic,strong) uiview * elementview; // 元素容器

再来看一下该模块的方法(lmjdynamicwelcomeview)

?
1
2
3
4
5
6
7
8
/* 设置所有动画元素 */
- (void)setanimateditems:(nsarray<lmjanimatedelement *> *)items;
 
/* 设置引导图滑动的屏数 */
- (void)setanimatedpagecount:(nsinteger)count;
 
/* 设置背景图以及背景图的大小 */
- (void)setbackgroundimage:(uiimage *)image size:(cgsize)size;

总结

以上就是这篇文章的全部内容了,希望能对各位ios开发者们能有所帮助,如果有疑问大家可以留言交流。

原文链接:http://www.jianshu.com/p/f7f81ed57931

延伸 · 阅读

精彩推荐
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01