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];
设置需要动画的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;
这个属性意思是子视图超出父视图的部分不显示。
demo在简书中不知道怎么上传。