跑马灯代码

news/2024/11/25 0:57:05/

 

//*********跑马灯代码


//********************ViewController.m中

#import "ViewController.h"

#import "Lightview.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

     

    NSString*text=@"两块钱,你买不了吃亏,两块钱,你买不了上当,真正的物有所值,拿啥啥便宜,买啥啥不贵,都两块,买啥都两块,全场卖两块,随便挑,随便选,都两块!";

    

    

    Lightview*lv=[[Lightview alloc]initWithFrame:CGRectMake(10, 100, self.view.bounds.size.width-20, 100)title:text];

    [self.view addSubview:lv];

     

    [super viewDidLoad];



//***********************Lightview.h中

#import <UIKit/UIKit.h>


@interface Lightview : UIView


-(instancetype)initWithFrame:(CGRect)frame title:(NSString*)tilie;

 

@end

//*********************Lightview.m中

#import "Lightview.h"


@implementation Lightview

{

    CGRect rectMark1;//标记第一个位置

    CGRect rectMark2;//标记第二个位置

    NSMutableArray*Array;

    BOOL isStop;//停止

    NSTimeInterval time;

 

    

}


 


-(instancetype)initWithFrame:(CGRect)frame title:(NSString *)tilie

{

    

    self=[super initWithFrame:frame];

    if (self) {

        tilie=[NSString stringWithFormat:@"%@",tilie];

        

        //时间

        time=[self displayDurationForString:tilie];

        //显示框颜色

        self.backgroundColor=[UIColor blueColor];

        //隐藏超出部分(默认为NO)

        self.clipsToBounds=YES;

        

        

//        字的颜色和大小

        UILabel*textLb=[[UILabel alloc]initWithFrame:CGRectZero];

        textLb.textColor=[UIColor grayColor];

        textLb.font=[UIFont boldSystemFontOfSize:20];

        textLb.text=tilie;

        

        

//        计算textLb大小

        //  sizeThatFits返回“最佳”大小适合给定的大小。实际上并没有调整的观点。默认返回现有视图大小

        CGSize sizeOfText = [textLb sizeThatFits:CGSizeZero];

        //sizeThatFits自适应

        

        //        CGSizeZero表示一个巨形框高为零,宽为零,原点位置也为零,需要创建边框但还不确定边框大小和位置时,可以使用此常量


        //显示字的位置

        rectMark1=CGRectMake(0, 0, sizeOfText.width, self.bounds.size.height);

        

        //滚动的位置((size)宽和高。origin点是x和y)

        rectMark2=CGRectMake(rectMark1.origin.x+rectMark1.size.width, 0, sizeOfText.width, self.bounds.size.height);

        

        

        textLb.frame=rectMark1;

        [self addSubview:textLb];

        

         //arrayWithObject也是个方法(滚动前把这些字写在数组里)

        Array=[NSMutableArray arrayWithObject:textLb];

        

        

        // 判断是否需要reserveTextLb

        //        如果字的长度>视图长才滚动

        BOOL useReserve = sizeOfText.width > frame.size.width ? YES : NO;

               //if(YES)==  if (useReserve)

        if (useReserve) {

            //  滚动后字的位置,大小和颜色和原来的字一样

            UILabel*reserveTexetLb=[[UILabel alloc]initWithFrame:rectMark2];

            

            reserveTexetLb.textColor=[UIColor redColor];

            reserveTexetLb.font=[UIFont boldSystemFontOfSize:20];

            reserveTexetLb.text=tilie;

            [self addSubview:reserveTexetLb];

            

            //滚动后的字放在数组里

            [Array addObject:reserveTexetLb];

            

            //调用下面这个方法

            [self  paomaAnimate ];

            

        }

        

    }

    

    return self;

}


-(void)paomaAnimate

{

    if (!isStop) {

        

        UILabel*lbindex0=Array[0];

        UILabel*lbindex1=Array[1];

        //控制动画

        [UIView  transitionWithView:self duration:time options:UIViewAnimationOptionCurveLinear animations:^{

            

            lbindex0.frame=CGRectMake(-rectMark1.size.width, 0, rectMark1.size.width, rectMark1.size.height);

            

            lbindex1.frame=CGRectMake(lbindex0.frame.origin.x+lbindex0.frame.size.width, 0, lbindex1.frame.size.width, lbindex1.frame.size.height);

            

                     } completion:^(BOOL finished)

         

        {

            lbindex0.frame=rectMark2;

            lbindex1.frame=rectMark1;

            

            [Array replaceObjectAtIndex:0 withObject:lbindex1];

            [Array replaceObjectAtIndex:1 withObject:lbindex0];

            

            [self paomaAnimate];

             

        }];

        

    }

}

 

//字幕滚动的速度

-(NSTimeInterval)displayDurationForString:(NSString*)string

{

    NSLog(@"%lu",(unsigned long)string.length);

          return string.length/30;

}







http://www.ppmy.cn/news/847979.html

相关文章

第五章 爬虫小程序-实例43-获取网页内容

1、准备工作 用Python编写的访问网页的程序中&#xff0c;有很多是调用 requests 库模块中的函数来进行操作&#xff0c;这个库模块把网页请求和操作等多项功能进行了高度封装&#xff0c;使其可以轻而易举完成浏览器的许多操作。 requests库是第三方模块&#xff0c;需要进行…

ASEMI-A7二极管可用什么代替,M7二极管正负极判断

编辑-Z 在电子设备的世界中&#xff0c;二极管是最常见的组件之一。它们在各种设备中发挥着重要的作用&#xff0c;包括电源适配器、电源供应器、电池充电器等。在这篇文章中&#xff0c;我们将探讨A7二极管可用什么代替&#xff0c;以及M7二极管正负极判断。 首先&#xff0c…

按计算机应用领域分类,按计算机用途分类

语音内容&#xff1a; 大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 计算机用途分类有很多类&#xff0c;常见的计算机用途分类的有&#xff1a; 1、数值计算。计算机广泛地应用于科学和工程技术方面的计算&#xff0c;这是计算…

旧电脑千万不要扔掉!它的剩余价值多得超乎想象!

相信很多人家里都会有闲置的旧电脑&#xff0c;没法用&#xff0c;扔了又可惜。 电脑硬件更新换代很快&#xff0c;一般电脑用三五年之后配置就不行了。大部分用户会直接卖掉&#xff0c;或者闲置在一边吃灰。既然是旧电脑&#xff0c;配置肯定不太高&#xff0c;很多游戏可能…

计算机网卡作用,一台电脑使用两张网卡的用途是什么

一台电脑使用两张网卡的用途是什么 双硬盘、双显卡、双声卡、双网卡大家都听得比较多&#xff0c;但实际使用的时候&#xff0c;它们有作用吗&#xff1f;今天广州电脑维修就“一台电脑使用两张网卡的用途是什么”的这个话题进行简单讨论。 双网卡作用是什么&#xff1f;什么用…

电脑android文件夹打开方式,电脑打开apk文件的方法步骤详解

apk文件是可以安装到手机上面的程序&#xff0c;在安卓手机上只要用文件管理器打开这个文件就可以开始安装了。在这里主要说一下在电脑上怎么打开apk文件&#xff0c;提取apk文件的资源。下面是学习小编给大家整理的有关介绍电脑打开apk文件的技巧&#xff0c;希望对大家有帮助…

windows7/10 预览窗口的用途及如何关闭

概述 我们在工作中几乎很少使用预览文件窗格栏&#xff0c;因为看起来不舒服&#xff0c;还占用文件布局空间&#xff0c;导致看文件不舒服&#xff0c;但这些只对某些人来说还是挺好用的功能&#xff0c;因为它存在有它存在的意义。下面介绍如何用windows7/10&#xff0c;如何…

计算机主机硬件图片,电脑主机里的各个硬件名称图片用途和使用说明

主机中每个硬件的名称图像用途 主要计算机主机包括&#xff1a;电源&#xff0c;主板&#xff0c;CPU&#xff0c;内存&#xff0c;图形卡&#xff0c;硬盘和光盘驱动器。 1、电源&#xff1a; 计算机电源是一种将220V交流电转换为直流电并为计算机配件(例如主板&#xff0c;驱…