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 ...
随机推荐
- SPOJ STC02 - Antisymmetry(Manacher算法求回文串数)
http://www.spoj.com/problems/STC02/en/ 题意:给出一个长度为n的字符串,问其中有多少个子串s可以使得s = s按位取反+翻转. 例如样例:11001011. 10 ...
- POJ 2914:Minimum Cut(全局最小割Stoer-Wagner算法)
http://poj.org/problem?id=2914 题意:给出n个点m条边,可能有重边,问全局的最小割是多少. 思路:一开始以为用最大流算法跑一下,然后就超时了.后来学习了一下这个算法,是个 ...
- Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)
本文转自:自己的微信公众号<集成电路设计及EDA教程> <Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)> 轻轻走过,悄悄看过,无 ...
- Linux指令学习
Linux命令格式:命令名 选项 参数 Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如 磁盘操作.文件存取.目录操作.进程管理.文件权限 设定等,在职场中,大量的服务器维护工作都是 ...
- Django rest framework(4)----版本
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django res ...
- mimalloc剖析
mimalloc是微软最近开源的一个malloc实现,其实验数据表明相比于jemalloc.tcmalloc等实现大约快了10%.其通过将空闲块列表(Free List)进行分片(Sharding)来 ...
- 神经大条的我-->记录我那些容易忘记的知识点
1.springmvc中每次进来的request都是保存在ThreadLocal里的,所以不会存在线程问题.可以直接用@Autowired全局注入 参考地址:https://my.oschina.n ...
- MyBatis bind标签的用法
From<MyBatis从入门到精通> <!-- 4.5 bind用法 bind标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中. 需求: concat函数连接字符串,在M ...
- android在style中使用自定义属性 error: style attribute not found.
异常: Error:(128, 5) error: style attribute 'com.honghui0531.prebiotics.view:attr/item_right_icon_src' ...
- 机器学习-利用pickle加载cifar文件
首先这里有百度云的数据集供大家下载:(官网太慢了) 链接:https://pan.baidu.com/s/1G0MxZIGSK_DyZTcuNbxraQ 提取码:ui51 复制这段内容后打开百度网盘手 ...