在我们开发的过程中会遇到文字的长度大于Label的宽度的情况,有三种处理方式:
1、显示不下的内容用“。。。”来代替;(缺点:没法显示全内容)
2、采取折行的方式; (缺点:高度没法确定,会影响其他内容的显示)
3、让文字在label中滚动显示, 这种方式既节省了空间,又可以让用户看到所有的内容;
其中方式3又可以有两种方式,一种是文字从边框左面全部滚动出去之后,再从边框又面滚出来;另一种是首尾相接的方式;
下面我们介绍方式3,主要代码如下:
//滚动式文字只出现一次,这个类是UIScrollview的子类
- (void)rollOnlyOneTitle:(NSString *)title textcolor:(UIColor *)color font:(UIFont *)font
{
//文字大小,设置label的大小和uiscroll的大小
CGSize size = [title sizeWithFont:font constrainedToSize:kConstrainedSize lineBreakMode:NSLineBreakByWordWrapping];
CGRect frame = CGRectMake(0, 0, size.width, size.height);
self.contentSize = size;//滚动大小
RollFrame = self.frame;
//初始化显示文字的label1
UILabel *templb1 = [[UILabel alloc]initWithFrame:frame];
self.label1 = templb1;
[templb1 release], templb1 = nil;
self.label1.text = title;
self.label1.font = font;
self.label1.textColor = color;
self.label1.backgroundColor = [UIColor clearColor];
[self addSubview:self.label1];
//保留最出的位置,以便后面恢复初始状态用
self.frame1 = self.label1.frame;
[self beginScrollWithTimeOfTimer:self.timeInterval withMode:KMODEONLY];
self.mode = KMODEONLY;
}
//滚动的动画,就是改变label1的frame的x的值。
-(void)animationOfScrollOnlyOne
{
CGPoint lb1Origin = self.label1.frame.origin;
CGSize lb1Size = self.label1.frame.size;
if (self.animationOption == -1) {
self.animationOption = UIViewAnimationOptionCurveEaseInOut;
}
[UIView animateWithDuration:self.timeInterval-0.1 delay:0 options:self.animationOption animations:^{
if (lb1Origin.x == 0) {
[self.label1 setFrame:CGRectMake(lb1Origin.x - lb1Size.width, lb1Origin.y, lb1Size.width, lb1Size.height)];
}else{
[self.label1 setFrame:CGRectMake(lb1Origin.x - lb1Size.width - RollFrame.size.width, lb1Origin.y, lb1Size.width, lb1Size.height)];
}
} completion:^(BOOL finished) {
[self.label1 setFrame:CGRectMake(RollFrame.size.width, lb1Origin.y, lb1Size.width, lb1Size.height)];
}];
}
其中的内容为:这是一个可以滚动的Label
效果图如下:

下面献上源码地址:http://download.youkuaiyun.com/detail/lifreshman/5185044
其中包括两种滚动方式和暂停滚动、恢复滚动。
当Label中的文字超过宽度时,有三种处理策略:省略号显示、折行和文字滚动。本文聚焦于第三种,即在Label中实现文字滚动显示,既节省空间又完整展示内容。介绍两种滚动模式——环绕滚动和无缝衔接,并提供源码下载链接。
1万+

被折叠的 条评论
为什么被折叠?



