本文主要是介绍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的fontSizeNSInteger 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];
这篇关于iOS 跑马灯效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!