简单易用"里程碑"、"时间轴"<iOS小组件>
非常感谢,帮助我的朋友们,谢谢你们。上次我的好朋友指出了我编码上(jwTextFiled工具组件)存在一些不规范问题,这次注意提高。
呆毛地址:https://github.com/NIUXINGJIAN/MilestonesAndTimeline.git
【创做背景】组件的制作是因为用到类似的功能,UI设计的图片不能满足实际场景需要。这个组件可能存在一些我没有发现的bug,如果你发现了,希望批评指正。
【首先声明】该组件是本人原创,请珍惜劳动成果。因为创造它的灵感只有一瞬间,但是完成它却使用了6个多小时,而自己测试优化基本上花了8个小时。
它能够帮助你做什么?
a、组件基本说明:
【组件内部都有啥?说明:组件的box个数不确定,box内部的items个数不确定,item<为lab>的高度不确定,box要包裹住一个box内的所有items,最后一个box后可能有附加数据addtions,附加数据条数不确定,任何一条附加数据文字长度不确定 ===> 没关系,组件已经统统帮你做好了】;
【如何修改它:你可以在 jw_ASV_Macro.h 文件里去修改与相关布局参数,进而改变组件的布局配置】
b、你只需要传入一个包裹有若干数据模型的数组,数据模型中就是可能要显示的字段,这样很好的支持了该组件自己根据一个模型去判断要在一个Box里加载多少条数据。而数组的个数就是Box的条数。支持附加数据,附加数据也做了自适应排版与组件自适应,附加数据可以有若干条。
【注意:如果你要实现自动根据数据模型去加载box内的items,你需要参照我的demo里的设计实现,你可能要把 jwAutoStepModel.h 与 jwAutoStepView.m 里相关模型部分做一些调整】
c、支持使用该组件的app在及时更新(刷新)数据的时候,组件及时更新,对内存做了优化,避免无用数据占据内存,能够根据数据模型,自己计算出在父视图中的高度,方便更新父视图的布局改变。
d、做一些自定义的修改,来定制它的布局,你只需要看懂一个宏文件 jw_ASV_Macro.h 即可。下面是宏文件,够简单吧
#pragma mark————————> (jwAutoStepView)方法宏定义 #define K_Cap_X 25 // 帽子x
#define K_Cap_Y 30 // 帽子y (默认)
#define K_Cap_W 25 // 帽子宽度
#define K_Cap_H K_Cap_W // 帽子高度 #define K_Cap_B_B_Scale 0.1 // 帽子与帽杆的比例
#define K_LAB_LINE_DESTENCE 3 // 如果Lab大于1行的行间距 #define K_MOUTH_W_MARGIN 10 // 嘴角的宽度
#define K_MOUTH_H_MARGIN K_MOUTH_W_MARGIN *0.6 // 嘴角的高度
#define K_P_2_X (FIRST_P_X + K_MOUTH_W_MARGIN)// 绘制第二个点的X值
#define BOX_RIGHT_MARGIN 25//边框距离最右边的距离 #define K_Line_H ((K_Cap_W)*1.40f) // 默认的帽子下面杆子高度 #define K_Cap_Box_Margin 8 // 帽子与Box间距 #define JW_A_S_MAINS_WIDTH [[UIScreen mainScreen] bounds].size.width//屏幕宽 // 第一个点的起始位置
#define FIRST_P_X ((K_Cap_X)+(K_Cap_W)+(K_Cap_Box_Margin))
#define BOX_WIDTH (JW_A_S_MAINS_WIDTH-K_Cap_X-K_Cap_W-K_Cap_Box_Margin-BOX_RIGHT_MARGIN) // 虚线框的宽度 // box 与 lab 与 lab 间距
#define K_inBOX_M_LAB_H 10.0f // box 与 Lab 水平 左右 间距
#define K_BOX_M_LAB_V 10.0f // box 内 Lab 与 Lab 竖直 间距
#define K_BOX_LR_LAB_SIZE CGSizeMake(inK_BOX_M_LAB_H, inK_BOX_M_LAB_H)// box 与 Lab 水平 左右 间距 #define K_L_H 21 // 一个Lab 的默认高度 #define K_CONAIN_TOP 100 // 组件页眉距离
#define K_CONAIN_BOTTOM 100 // 组件页脚距离 #define K_BOX_M_BOX_V 20 // 线框间距离 (默认) #define K_LASTBOX_M_ADDLAB_V 50 // 最后一个box 与首个附加Lab 的竖直距离
#define K_ADDLAB_M_ADDLAB_V 15 // 附加Lab与附加Lab之间的竖直距离 #define K_ADDLAB_M_CONTAIN_L 20 // 附加Lab与组件左边的水平距离
#define K_ADDLAB_M_CONTAIN_R 20 // 附加Lab与组件右边的水平距离
简单易用"里程碑"、"时间轴"<iOS小组件>的更多相关文章
- IOS小组件(6):小组件实现时钟按秒刷新
引言 上一节中我们了解了IOS小组件的刷新机制,发现根本没法实现按秒刷新,但是看别的App里面有做到,以为用了什么黑科技,原来是因为系统提供了一个额外的机制实现时间的动态更新,不用走小组件的刷新机 ...
- IOS小组件(8):App与Widget数据共享
引言 Widget是一个迷你版的App,IOS有沙盒机制,不同App之间无法直接共享数据.组件和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数 ...
- IOS 小组件(7):小组件点击交互
引言 前面我们似乎掌握了实现一个小组件所需要的一切技能,默认情况下桌面点击小组件,也正常跳转到了App中.接下来我们一起来看看,小组件是怎么做到点击跳转到App的. 点击交互方式 点击Widget ...
- 自适应文案提示框、无数据图片加载<IOS小组件>
非常感谢,帮助我的朋友们,谢谢你们. 该组件的编写仅仅用来不到4个小时,包括测试与修改bug.为他起名为AdaptivePromptDialogBox(就是自适应文案提示框): 呆毛地址:链接 < ...
- IOS Widget(5):小组件刷新机制
引言 前面的章节学完已经让我们可以顺利实现一个小组件了,但是小组件里面的数据如何刷新的呢,本节内容将讲解IOS的刷新机制. 大纲 系统如何管理小组件刷新 Timeline刷新机制 Timeline ...
- iOS最为简单时间轴(GZTimeLine)
概述 迄今为止最为简单的时间轴 :可以自定义(类似于美团的送餐信息) 详细 代码下载:http://www.demodashi.com/demo/10797.html 迄今为止 最为简单的时间轴 :可 ...
- iOS之TimeLine(时间轴)的实现
这是一个关于OC时间轴的简单实现,我认为重要的是思路. 感谢作者:Cyandev 的文章<iOS 实现时间线列表效果>给的思路.这里先附上Objective-C的代码实现,有时间再去试试S ...
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...
- [置顶] 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...
随机推荐
- Flex4_Tree组件1(添加、删除、展开、关闭、右键菜单)
1.屏蔽系统菜单:工程目录“html-template”文件夹-->“index.template.html”文件中,在var params = {};语句下添加新语句: para ...
- Unix系统介绍
一.基础知识 操作系统 用户与计算机硬件之间的界面,是控制.管理计算机内各种硬件与软件资源.它是一个多用户.多任务.分时的操作系统. 对于分时系统:假如a进程需要16个时间片,现在根据优先级只分配了1 ...
- Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.1
Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.1 http://blog.csdn.net/sunbow0 Spark ML ...
- 通过Pojo对象 field 属性加注解实现格式校验,极大的降低代码量
近期做一个接口.接受外系统的报文,通过XStream转换成java对象以后.须要对当中的字段做格式校验. 要求例如以下: 传统的方式是硬编码校验.可是对于field非常多的情况.代码量暴增.easy出 ...
- 带缓冲的IO( 标准IO库 )
前言 在之前,学习了 read write 这样的不带缓冲IO函数.而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 writ ...
- LogStash 日志搜集
安装 下载:https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gz 解压到指定目录即可 配置 bin目录添加logsta ...
- 在c代码中获取用户环境变量
1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0. 2 在代码中的使用方法 直接extern char **environ,然后 直接environ ...
- 录音-树莓派USB摄像头话筒
实测可用: sudo arecord --duration=10 --device=plughw:1,0 --format=cd aaa.wav sudo arecord --duration=10 ...
- leetcode 747. Largest Number At Least Twice of Others
In a given integer array nums, there is always exactly one largest element. Find whether the largest ...
- TortoiseSVN使用笔记
TortoiseSVN版本冲突详解 下列步骤展示了如何将分支A中的修改合并到分支B. 1.在分支B的本地副本目录中选择"合并(Merge)". 2.选择“合并一个版本范围(Me ...