非常感谢,帮助我的朋友们,谢谢你们。上次我的好朋友指出了我编码上(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小组件>的更多相关文章

  1. IOS小组件(6):小组件实现时钟按秒刷新

    引言   上一节中我们了解了IOS小组件的刷新机制,发现根本没法实现按秒刷新,但是看别的App里面有做到,以为用了什么黑科技,原来是因为系统提供了一个额外的机制实现时间的动态更新,不用走小组件的刷新机 ...

  2. IOS小组件(8):App与Widget数据共享

    引言   Widget是一个迷你版的App,IOS有沙盒机制,不同App之间无法直接共享数据.组件和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数 ...

  3. IOS 小组件(7):小组件点击交互

    引言   前面我们似乎掌握了实现一个小组件所需要的一切技能,默认情况下桌面点击小组件,也正常跳转到了App中.接下来我们一起来看看,小组件是怎么做到点击跳转到App的. 点击交互方式 点击Widget ...

  4. 自适应文案提示框、无数据图片加载<IOS小组件>

    非常感谢,帮助我的朋友们,谢谢你们. 该组件的编写仅仅用来不到4个小时,包括测试与修改bug.为他起名为AdaptivePromptDialogBox(就是自适应文案提示框): 呆毛地址:链接 < ...

  5. IOS Widget(5):小组件刷新机制

    引言   前面的章节学完已经让我们可以顺利实现一个小组件了,但是小组件里面的数据如何刷新的呢,本节内容将讲解IOS的刷新机制. 大纲 系统如何管理小组件刷新 Timeline刷新机制 Timeline ...

  6. iOS最为简单时间轴(GZTimeLine)

    概述 迄今为止最为简单的时间轴 :可以自定义(类似于美团的送餐信息) 详细 代码下载:http://www.demodashi.com/demo/10797.html 迄今为止 最为简单的时间轴 :可 ...

  7. iOS之TimeLine(时间轴)的实现

    这是一个关于OC时间轴的简单实现,我认为重要的是思路. 感谢作者:Cyandev 的文章<iOS 实现时间线列表效果>给的思路.这里先附上Objective-C的代码实现,有时间再去试试S ...

  8. 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!

    前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...

  9. [置顶] 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!

    前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...

随机推荐

  1. CrtmpServer 接收推送视频流 注册流基本流程

    今天研究了CrtmpServer 将客户端推动过来的视频流注册到服务的流程,记录下来,以备后用. 图1 注册前端视频流流程

  2. DataTable和DataRow利用反射直接转换为Model对象的扩展方法类

    DataTable和DataRow利用反射直接转换为Model对象的扩展方法类   /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为 ...

  3. AngularJs 常用

    Angularjs开发一些经验总结:http://www.cnblogs.com/whitewolf/archive/2013/03/24/2979344.html 七步从AngularJS菜鸟到专家 ...

  4. oracle ORA-06550

    declare  cnt integer; begin     select count(0)     into cnt     from user_all_tables    where table ...

  5. Mysql 基本操作指令+增删查改

    nqinx是web前端服务端 负载均衡(软件)可以将用户请求调度到几台机器的nqinx上去做 ,一般都有两个负载均衡,一个做备用硬件的要比软件的好,但是一般公司都用软件实现数据库软件其实也是一个服务端 ...

  6. java线程中断[interrupt()函数] (转载)

    一个正常的线程中断: 从运行到真正的结束,应该有三个阶段: 正常运行. 处理结束前的工作,也就是准备结束. 结束退出. Java曾经提供过抢占式限制中断,但问题多多,例如的Thread.stop.另一 ...

  7. DotNetBar MessageBoxEx 显示中文 显示office2007风格

    MessageBoxEx显示消息的时候按钮是中文的解决这个问题设置 MessageBoxEx的UseSystemLocalizedString属性为 true. MessageBoxEx.UseSys ...

  8. WPF popup控件的使用

    <Window x:Class="WPFPopup.RuntimePopup"     xmlns="http://schemas.microsoft.com/wi ...

  9. Java实现MD5加密解密类

    http://blog.csdn.net/m_changgong/article/details/4361526

  10. 如何解决Apache无法启动的问题

    今天重装xampp后,一直无法启动Apache,提示以下错误: 22:36:54 [Apache] Attempting to start Apache app...22:36:54 [Apache] ...