关于分享功能的页面应该有很多,写这篇swift版本的分享页面,根据不同模块可能分享的功能按钮不一样,引言:
想必大家都使用微博右上角更多按钮,会弹出如下的界面:
在开发中,可能针对同一个app的不同按钮,要分享的平台和功能按钮选项是不同的,这就需要开发者在开发之前就要设计封装好,此次根据项目本身进行封装了一份,希望对大家有所帮助!
一、概述
在封装项目效果如下,里面的内容,可以自行在枚举中添加(下面代码会说到)-
- 黄色内容是提示语,放在UILabel中
- 红色内容是分享的平台,可以滚动,放在UICollectionView中
- 绿色内容是功能模块,可以滚动,放在UICollectionView中
- 蓝色内容是取消按钮,放在UIButton中
对于上面的布局,估计很多人都会布局成功,重点讲述一下,自己项目中怎么封装出来不同模块,分享页面不一的情况!下面是代码的主体结构:
二、详解(附带代码)
1. XYZShareEnum - 存放枚举类型
XYShareEnum用于存放分享平台、功能按钮以及使用场景内容和判断!
1.1 首先看一下分享平台设置
如下图:
通过这个枚举设置分享平台,可以自行选择设置分享的内容.
1.2 然后看功能选项按钮
如下图:
利用的同样的方法结构,添加功能性按钮选项,可以根据需求增加需要的功能按钮,并导入图片.
1.3 最后使用场景枚举
上面是不同场景分享不同的第三方平台,如果功能性按钮,分享的页面也都不同,也可书写类似的枚举进行管理.basic代表基本的第三方选项;myItem代表是公司开发的其他app,分享到自己公司app上
2. XYZShareViewController - 布局以及页面展示
XYZShareViewController 用于页面布局展示,以及处理响应的点击事件
首先定义tools,代表功能性按钮选择,存放XYZShareToolEnum的枚举功能选项,type:用于存放平台的选择,代表basic与myItem两个选项,block:
clickItemHandle用于点击某一个item.
上面的collectionView用于分享平台的展示,下面的toolsCollectionView存放的是功能性按钮.
上面的convenience init方法用于接受使用场景,下面的类方法show,用于在适合弹出分享页面的时候调用
在数据源方面处理的代码如下:
用于显示功能和平台展示的区别和赋值.
3. XYZShareInfo -分享内容回调
XYZShareInfo: 用于在UICollectionView中did事件处理,点击某个Item分享内容
4. 使用方法
在ViewController中,点击分享按钮,弹框显示,代码如下:
发现函数返回时XYZShareInfo,在里面处理要分享的内容
上面就是公司项目中在不同场景使用不同分享页面的封装
代码git: https://github.com/zxy1829760/XYZShareTool
希望对大家在项目中思路和解决问题有所帮助,谢谢
请发表评论