时间轴实现

话不多少,先上效果图,样式有点丑,请理性观看


效果图😄

这里实现的效果图主要包含两部分

tableview的头部视图+自定义cell

头部视图就不做叙述了,主要说的是自定义cell

cell声明文件,主要用于接收自定义model对象

    #import "OrderModel.h"

    @interface CTableViewCell : UITableViewCell

    @property(nonatomic,strong)OrderModel *model;

    @end

cell实现文件,初始化的控件,实现思路主要是把时间轴的竖线在每个cell里面的位置拆分为上划线和下划线

#import "CTableViewCell.h"

@interface CTableViewCell()

@property(nonatomic,strong)UIView *lineView;    //上划线

@property(nonatomic,strong)UIView *lastLineView; //下划线

@property(nonatomic,strong)UIImageView *TypeImageView; //状态图片

@property(nonatomic,strong)UILabel *text;              //文本内容

@property(nonatomic,strong)UILabel *datelabel;        //日期

@end

重写model的set方法
cell的样式主要通过model的type属性来判断显示不同的样式和下划线的颜色。

    - (void)setModel:(OrderModel *)model {

    _lineView.frame = CGRectMake(30, 0, 1, 35);

    _lastLineView.backgroundColor = [UIColor lightGrayColor];

    switch (model.type) {

    case 0:

    {

    //订单步骤失败状态

    _lineView.backgroundColor = [UIColor redColor];

    _TypeImageView.image = [UIImage imageNamed:@"失败"];

    _text.textColor = [UIColor redColor];

    break;

    }

    case 1:

    {

    //订单步骤成功状态

    //步骤完成

    _lineView.backgroundColor = [UIColor greenColor];

    _TypeImageView.image = [UIImage imageNamed:@"步骤完成"];

    _text.textColor = [UIColor greenColor];

    break;

    }

case 2:

{

//订单步骤等待状态

//步骤未完成

_lineView.backgroundColor = [UIColor lightGrayColor];

_TypeImageView.image = [UIImage imageNamed:@"步骤未完成"];

_text.textColor = [UIColor lightGrayColor];

break;

}

default:

break;

}

_TypeImageView.frame = CGRectMake(CGRectGetMinX(_lineView.frame) - 15, CGRectGetMaxY(_lineView.frame), 30, 30);

_text.frame = CGRectMake(CGRectGetMaxX(_TypeImageView.frame) + 10, CGRectGetMinY(_TypeImageView.frame), CGRectGetWidth(self.frame), CGRectGetHeight(_TypeImageView.frame));

_text.text = model.text;

_datelabel.frame = CGRectMake(CGRectGetMinX(_text.frame), CGRectGetMaxY(_text.frame), CGRectGetWidth(self.frame), CGRectGetHeight(_text.frame));

_datelabel.text = model.date;

//步骤4

if ([model.index integerValue] == 4) {

_text.font = [UIFont systemFontOfSize:12];

switch (model.type) {

case 0:

{

//订单步骤失败状态

_text.textColor = [UIColor redColor];

_TypeImageView.image = [UIImage imageNamed:@"失败状态 "];

_lineView.backgroundColor = [UIColor redColor];

break;

}

case 1:

{

//最后一个步骤状态(完成状态)

_text.textColor = [UIColor greenColor];

_TypeImageView.image = [UIImage imageNamed:@"已完成状态"];

_lineView.backgroundColor = [UIColor greenColor];

break;

}

case 2:

{

//订单步骤未完成状态

//未完成状态

_text.textColor = [UIColor lightGrayColor];

_TypeImageView.image = [UIImage imageNamed:@"未完成状态 "];

_lineView.backgroundColor = [UIColor lightGrayColor];

break;

}

default:

break;

}

_lastLineView.frame = CGRectZero;

}else {

_lastLineView.frame = CGRectMake(CGRectGetMinX(_lineView.frame), CGRectGetMaxY(_lineView.frame) + 5, 1, CGRectGetHeight(_text.frame) + CGRectGetHeight(_datelabel.frame));

}

//保存当前cell的高度

model.cellHeight = CGRectGetMaxY(_datelabel.frame);

//保存当前lastLineView,方便下一个步骤状态设置颜色

model.lastLineView = _lastLineView;

model.lineView = _lineView;

}

最后放上model类的实现代码

    typedef NS_ENUM(NSInteger) {

    OrderFail = 0,  // **< 等待状态 */

    orderSuccess,  // **< 成功状态 */

    OrderWaiting    // **< 失败状态 */

    }orderType;

    @interface OrderModel : NSObject

    @property(nonatomic,copy)NSString *text;  /**< 文本内容 */

    @property(nonatomic,copy)NSString *date;  /**< 日期    */

    @property(nonatomic,assign)orderType type; /**< 订单状态 */

    @property(nonatomic,copy)NSString *index;  /**< 订单的步骤 */

    /** cell的高度 */

    @property (nonatomic, assign) CGFloat cellHeight;

    /** 上划线 */

    @property (nonatomic, strong) UIView *lineView;

    /** 下划线 */

    @property (nonatomic, strong) UIView *lastLineView;

    + (instancetype)OrderWithDic:(NSDictionary *)dic;

    @end
    @implementation OrderModel

    + (instancetype)OrderWithDic:(NSDictionary *)dic

    {

    OrderModel *order = [[self alloc] init];

    [order setValuesForKeysWithDictionary:dic];

    return order;

    }

    @end

写得不好的地方还望大家指出,大家共同学习和进步.😄😄
demo链接 https://github.com/woshigaokeji/git_-.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容