时间轴

# RMTimeLineDemo


GitHub:https://github.com/LearnMoreAndBetter/RMTimeLineDemo

简单的时间轴,和动态缓存高度



这里用到了一个简单的思路,把时间轴的线条当做一条完整的线,然后通过scrollview的滚动,修改lineviewframe,这样就不需要在每一条cell中添加一条线段了

并且项目中针对线条做一个线条的渐变色

此外项目中还增加了一个动态缓存高度


UIView *bgView = [[UIView alloc]initWithFrame:self.tableView.bounds];

[bgView addSubview:self.lineView];

self.tableView.backgroundView = bgView;


如果项目中封装了framey的重设,可以自行优化减少代码的哦

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

if (self.tableView.contentOffset.y > 20) {

CGRect frame = self.lineView.frame;

frame.origin.y = 0;

self.lineView.frame = frame;

}else{

CGRect frame = self.lineView.frame;

frame.origin.y = 20 - self.tableView.contentOffset.y;

self.lineView.frame = frame;

}

}



- (UIView *)lineView{

if (!_lineView) {

_lineView = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 2, APP_SCREEN_HEIGHT)];

// _lineView.backgroundColor = CETC_GRAY_LINE_COLOR;

// 简单的线条渐变色

CAGradientLayer *gradientLayer = [CAGradientLayer layer];

gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor yellowColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];

gradientLayer.locations = @[@0.3, @0.5, @1.0];

gradientLayer.startPoint = CGPointMake(0, 0);

gradientLayer.endPoint = CGPointMake(0, 1);

gradientLayer.frame = _lineView.bounds;

[_lineView.layer addSublayer:gradientLayer];


}

return _lineView;

}


//这里显示与否的判断与数据相关,具体问题具体分析

if (indexPath.row == 0) {

cell.timeShow = YES;

}else{

NSDictionary *preDict = self.dataLists[indexPath.row - 1];

cell.timeShow = ![preDict[@"time"] isEqualToString:dict[@"time"]];

}


cell.timeLabel.text = dict[@"time"];

[cell contentLabelText:dict[@"content"]];


//存储高度

[self.heightAtIndexPath setObject:@([cell cellHeight]) forKey:indexPath];



- (CGFloat)cellHeight{

return CGRectGetMaxY(self.bgView.frame) + 10;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 Timeline 时间线实现会拐弯的时间轴相对于普通的时间线来说更加有趣和独特。在实现这种时间轴时,我们可以使用 Vue3 的组件化开发方式来创建一个可重复使用的时间线组件。 首先,我们需要创建一个 TimeNode(时间节点)组件,用来表示每个时间点。我们可以为每个节点设置一个时间和一个事件描述。时间节点可以通过计算属性或者接收传递的属性来设定其位置。 接下来,在时间线组件中,我们需要创建一个数组来存储时间节点。我们可以使用 v-for 指令来遍历这个数组,并将每个时间节点渲染到视图中。 然后,我们可以使用 CSS 来为时间节点添加样式,使其能够正确地显示出拐弯的效果。我们可以为时间节点设置不同的样式类,然后在 CSS 中定义这些样式类的样式规则,来实现时间轴的拐弯效果。 最后,我们可以根据时间节点的数量和位置,计算出时间轴的长度和位置,然后通过 CSS 来设置时间轴的样式,使其正确地显示出拐弯的时间轴效果。 通过以上的步骤,我们就可以实现一个拐弯的时间轴组件。这个组件可以根据需要接收传递的属性,可以根据时间节点的数量和位置来自动计算出时间轴的样式,使其能够正确地显示出拐弯的效果。 总之,Vue3 Timeline 时间线实现会拐弯的时间轴,通过使用 Vue3 的组件化开发方式,结合计算属性、遍历数组、添加样式和计算位置等技巧,可以比较容易地实现出一个有趣和独特的时间轴组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值