iOS 跑马灯效果

.h文件

/**
 *  跑马灯效果
 */

@interface LXMarquee : UIView
{
    UILabel *marquee;//跑马灯label
}

@property (nonatomic, retain) UILabel *marquee;

- (instancetype)initWithFrame:(CGRect)frame;

- (void)setMarqueeDo;
@end

.m文件

@implementation LXMarquee
@synthesize marquee;

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        marquee = [[UILabel alloc]initWithFrame:self.bounds];
        [self addSubview:marquee];
        CGRect f = marquee.frame;
        f.origin.x = frame.size.width;
        marquee.frame = f;
        self.layer.masksToBounds = YES;
        /**
         *  或者使用下面一句
         */
//        [self setClipsToBounds:YES];
    }
    return self;
}
- (void)setMarqueeDo {
    CGFloat fontSize = marquee.font.pointSize;//获取font的fontSize
    NSInteger length = marquee.text.length;
    CGRect rect = self.frame;
    if (length * fontSize > rect.size.width) {//判断文字长度超过view的frame
        [marquee sizeToFit];
        [UIView beginAnimations:@"testAnimation" context:NULL];
        [UIView setAnimationDuration:8.8f];
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationRepeatAutoreverses:NO];
        [UIView setAnimationRepeatCount:999999];
        CGRect frame = marquee.frame;
        frame.origin.x = -frame.size.width;
        marquee.frame = frame;
        [UIView commitAnimations];
    }
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end

实现部分

 LXMarquee *label = [[LXMarquee alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];
    label.marquee.text = @"跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯跑马灯";
    [label setMarqueeDo];
    [self.view addSubview:label];



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ai迷惑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值