//文本标签
UILabel *marLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 100, 0, 0)];
marLabel.text = @"人生若只如初见,何事秋风悲画扇。等闲变却故人心,却道故人心易变。骊山语罢清宵半,泪雨霖铃终不怨。何如薄幸锦衣郎,比翼连枝当日愿。";
[marLabel sizeToFit]; //size根据文字自适应
[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]; //设置动画重复次数
//设置需要动画的label的frame
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;这个属性意思是子视图超出父视图的部分不显示。