swift 分享share页面封装(功能按钮不同)
关于分享功能的页面应该有很多,写这篇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
希望对大家在项目中思路和解决问题有所帮助,谢谢
swift 分享share页面封装(功能按钮不同)的更多相关文章
- 微信小程序一个页面多个按钮分享怎么处理
首先呢,第一步先看api文档: 组件:button https://developers.weixin.qq.com/miniprogram/dev/component/button.html 框架- ...
- OAF在打开的新页面中添加按钮,功能是关闭当前页面
OAF在打开的新页面中添加按钮,功能是关闭当前页面 javascript:close()
- [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 富文本编辑器UEditor自定义工具栏(二、插入图片、音频、视频个性化功能按钮和弹层及自定义分页符)
导读:本篇将简单探讨插入图片.音频.视频的功能按钮实现方式 传送门:富文本编辑器UEditor自定义工具栏(一.基础配置与字体.背景色.行间距.超链接实现) 一.效果图 1.UEditor自定义工具栏 ...
- 小程序分享H5页面
1.在要分享的按钮上写一个跳转 <navigator url="../invite1/invite1"> <button class="invite_b ...
- 分享一下我封装iOS自定义控件的体会,附上三个好用的控件Demo <时间选择器&多行输入框&日期选择器>
前段时间有小伙伴问到我:"这样的控件该怎么做呢?",我感觉是个比较简单的控件,可能对于入行不久的同志思路没有很清晰吧.趁着最近工作不忙,就来这里分享一下我封装自定义控件的几点体会吧 ...
- 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)
导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...
- 160229-01、web页面常用功能js实现
web页面常用功能js实现 1.网页未加载时弹出新窗口 <body onunload="window.open('http://www.a68.cn');">< ...
- vue html页面打印功能vue-print
vue项目中,HTML页面打印功能.在项目中,有时需要打印页面的表格, 在网上找了一个打印组件vue-print-nb 使用方式 安装 npm install vue-print-nb --save ...
随机推荐
- python爬取拉勾网数据并进行数据可视化
爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...
- JavaScript 基础知识 表达式和运算符
表达式的概念:将同类型的数据(如常量.变量.函数等),用运算符号按一定的规则连起来的.有意义的式子称为表达式 一.原始表达式 最简单的表达式,是表达式的最小单位.JavaScript中的原始表达式包含 ...
- Numpy之数组创建
ndarray 数组除了可以使用 ndarray 构造器来创建外,也可以通过如下方式创建. 一.创建数组 numpy.empty 语法: numpy.empty(shape, dtype = floa ...
- SpringBoot系列——CORS(跨源资源共享)
前言 出于安全原因,浏览器禁止ajax调用当前源之外的资源(同源策略),我们之前也有写个几种跨域的简单实现(还在问跨域?本文记录js跨域的多种实现实例),本文主要详细介绍CORS,跨源资源共享,以及如 ...
- 职业生涯之完成OCM考试后的感想
背景知识:关于OCM认证,百科是这样描述的: Oracle Certified Master(OCM) 大师认证资质是Oracle认证的最高级别.此认证是对技术.知识和操作技能的最高级别的认可.Ora ...
- 按行读取String类型
BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(content.getByt ...
- Nginx代理和负载均衡实验
一.构建两个tomcat容器并启动 [root@localhost bin]# ps -ef|grep tomcat root : pts/ :: /usr/bin/java -Djava.util. ...
- MyBatis从入门到精通(十二):使用collection标签实现嵌套查询
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解使用collectio ...
- 使用gets函数常见问题
C语言面试经常会考如下一道题,哪里有错误: #include <stdio.h> int main() { char string[100] = {'\0'}; ...
- Redis HyperLogLog用法简介
(1)HyperLogLog简介 在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 ...