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

5 篇文章 0 订阅
4 篇文章 0 订阅

实现效果


这里写图片描述
可以将 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 消失后 重新让它 从界面右边 慢慢移动出来.

这里写图片描述
这里写图片描述

源码下载

下载地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值