UILabel(跑马灯)

2015-02-28  本文已影响4735人  guaker
跑马灯
UILabel *marLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 100, 0, 0)];
marLabel.text = @"人生若只如初见,何事秋风悲画扇。等闲变却故人心,却道故人心易变。骊山语罢清宵半,泪雨霖铃终不怨。何如薄幸锦衣郎,比翼连枝当日愿。";

size根据文字自适应

[marLabel sizeToFit];
[self.view addSubview:marLabel];

动画方法的详细说明请参考UIView(UIViewAnimation)
开始动画
参数animationID,动画内部应用程序标识用来传递给动画代理消息。
参数context,附加的应用程序信息用来传递给动画代理消息。

[UIView beginAnimations:@"Marquee" context:NULL];

设置动画持续时间

[UIView setAnimationDuration:20.0f];

设置动画变化曲线

[UIView setAnimationCurve:UIViewAnimationCurveLinear];

设置动画是否从当前状态开始播放

[UIView setAnimationRepeatAutoreverses:NO];

设置动画重复次数

[UIView setAnimationRepeatCount:10000];

设置需要动画的labelframe

CGRect frame = marLabel.frame;
frame.origin.x = -frame.size.width;
marLabel.frame = frame;

结束动画

[UIView commitAnimations];

注意

以上代码是相对于屏幕的320宽度实现的,但是实际使用的时候,可能只需要屏幕中间200的宽度,应该怎么做?
label创建一个背景view,将label添加到这个view上,这样label实际的frame就会被这个view所遮挡,这里需要设置一个属性bgView.clipsToBounds = YES;这个属性意思是子视图超出父视图的部分不显示。
demo在简书中不知道怎么上传。

上一篇下一篇

猜你喜欢

热点阅读