IOS实战 (3) 之 水平 循环滚动文本

    xiaoxiao2026-03-28  11

    实现效果


    可以将 Label 变成自定义的 View可 滚动播放 View


    实现思路


    1.UIScrollView里面放子 View(UIScrollView 设置不能手动滑动) 2.设置动画 更改 ScrollView contentOffset.x 的值 3.设置 Timer 循环调用


    实现核心代码


    设置动画

    [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1]; [_scrollView setContentOffset:CGPointMake(_scrollView.contentOffset.x + 20, 0) animated:NO]; [UIView commitAnimations]; if (_scrollView.contentOffset.x > _messageView.frame.size.width) { _scrollView.contentOffset = CGPointMake(-_messageView.frame.size.width, 0); if (_array.count==0) { _label.text=@"暂没有通知"; _arrayIndex=0; }else{ _label.text=_array[_arrayIndex]; //标志位加1 _arrayIndex ++; //越界后回到初始值 if (_arrayIndex==_array.count) { _arrayIndex=0; } } }

    设置数据

    -(void)setData:(NSMutableArray *)data{ if(_scrollTimer) { [_scrollTimer invalidate]; _scrollTimer = nil; } _arrayIndex=0; _label.text=@"正在刷新通知"; if (data.count ==0) { _label.text=@"暂没有通知"; } if (data.count>0) { [_array removeAllObjects]; [_array addObjectsFromArray:data]; } if (_scrollTimer==nil) { _scrollTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(scroll) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:_scrollTimer forMode:NSRunLoopCommonModes]; } [_scrollTimer fire]; }

    总结


    contentOffset 的数值 可以简单的理解为 内容被遮挡住的 x轴距离 或者 y 轴距离.这样就能判断 Lable 完全消失在屏幕的那个点.当 Label 消失后 重新让它 从界面右边 慢慢移动出来.

    源码下载

    下载地址

    转载请注明原文地址: https://ju.6miu.com/read-1308253.html
    最新回复(0)