时间轴实现

作者: 科了个技 | 来源:发表于2016-06-06 16:07 被阅读314次

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


效果图😄

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

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

相关文章

网友评论

    本文标题:时间轴实现

    本文链接:https://www.haomeiwen.com/subject/ljxddttx.html