iOS-文字滚动的Label

当Label中的文字超过宽度时,有三种处理策略:省略号显示、折行和文字滚动。本文聚焦于第三种,即在Label中实现文字滚动显示,既节省空间又完整展示内容。介绍两种滚动模式——环绕滚动和无缝衔接,并提供源码下载链接。

在我们开发的过程中会遇到文字的长度大于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

其中包括两种滚动方式和暂停滚动、恢复滚动。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值