iOS开发(OC)——文字滚动效果
来源:互联网 发布:php注入 编辑:程序博客网 时间:2024/06/04 23:36
我们在浏览网页或者在使用一些娱乐新闻类的App的时候,会经常看到标题如果过长的话,会有一个滚动的效果,那么这种效果是怎样实现的呢?我在这里为大家介绍两种方法:
- 利用时间器,在一定的时间间隔内,不断地向后截取,并且每次截取的长度是相同的。
1.1首先定义几个全局变量
@property (nonatomic,strong)UILabel *titleLabel;@property (nonatomic,strong)NSString *titleString;@property (nonatomic,assign)int fromLocation;//字符串截取的开始位置
1.2为文字字符串赋值
_titleString=@"我们在浏览网页或者在使用一些娱乐新闻类的App的时候,会经常看到标题如果过长的话,会有一个滚动的效果,那么这种效果是怎样实现的呢?";
1.3定义控件label
_titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(20, 100, 200, 21)]; [self.view addSubview:_titleLabel];
1.4设置初始位置
_fromLocation=0;
1.5创建时间器
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(labelScroll) userInfo:nil repeats:YES];
1.6时间器方法代码
-(void)labelScroll{ if(_titleString.length>10){//假设字符长度超过10则进行滚动 if(_fromLocation+10<=_titleString.length){//保证截取的范围不超过原有字符串长度,否则会越界崩溃 NSString *tempString=_titleString;//创建一个临时变量字符串 _titleLabel.text=[tempString substringWithRange:NSMakeRange(_fromLocation, 10)]; }else{//超出范围后,把字符串截取的开始位置重置为0,重新从头滚动 _fromLocation=0; NSString *tempString=_titleString;//创建一个临时变量字符串 _titleLabel.text=[tempString substringWithRange:NSMakeRange(_fromLocation, 10)]; } }else{ _titleLabel.text=_titleString; } _fromLocation++;//位置向后移动一位}
- 上面那种方法看起来可能会有一种卡顿的效果,下面这种方法是利用系统提供的动画API写的,能实现平滑滚动。此方法已经封装好,只要传入创建的label和label的长度即可
+(void)startAnimationIfNeededWithLabel:(UILabel *)label andLabelWidth:(CGFloat)width{ //取消、停止所有的动画 [label.layer removeAllAnimations]; CGSize textSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];//获取赋值后的label的size CGRect lframe = label.frame; lframe.size.width = textSize.width; label.frame = lframe; if (textSize.width > width) {//文字长度大于label长度 float offset = textSize.width;//滚动的长度,大家可以试着改动这个值,寻找适合自己的效果 [UIView animateWithDuration:10.0 delay:1.0 options:UIViewAnimationOptionRepeat //动画重复 |UIViewAnimationOptionTransitionFlipFromRight //动画从左到右 |UIViewAnimationOptionCurveLinear //动画的时间曲线,线性可实现平滑滚动 animations:^{ label.transform = CGAffineTransformMakeTranslation(-offset, 0); } completion:^(BOOL finished) { } ]; }}
1 0
- iOS开发(OC)——文字滚动效果
- iOS开发(OC)——输入框抖动效果
- iOS开发(OC)——绕圆心旋转效果
- iOS开发(OC)——QQ点赞效果
- iOS开发(OC)——文字的自适应高度和行间距的设置
- iOS文字上下滚动效果的实现
- iOS开发(OC)——录音
- iOS开发(OC)——UIWindow
- 文字无限无缝滚动效果——和派孔明
- 多媒体网页效果(一)————滚动文字Marquee属性及参数设置
- AndroidStudio——TextView文字左右滚动(跑马灯效果)无效解决办法
- 【Android】跑马灯效果(文字滚动)
- 跑马灯效果(文字滚动)
- 03-文字滚动(页面效果)
- --------------------【Android】跑马灯效果(文字滚动)
- 页面文字滚动效果
- 文字向上滚动效果
- 文字滚动效果
- Android中ListView的几种常见优化方法
- Java 对象、引用和指针
- 阿拉伯数字转为中文汉字(非金额转换) Js分享
- 地址转换NAT
- MSSQL之二 Sql Server中管理库与表
- iOS开发(OC)——文字滚动效果
- String
- 217ContainsDuplicate.c
- android模拟NBA西决比赛!
- HDU 2897-邂逅明下(博弈-SG函数打表找规律)
- python3.x输出文件最后几行
- 蓝桥杯:矩阵乘法
- 【转大牛的】Android studio 页面布局
- 十二、Bmob免费移动后方服务,你不用再搭php+MySQL移动后端 Android studio+Bmob后台服务feedback简单实现