iOS-文字滚动的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.csdn.net/detail/lifreshman/5185044

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



你可能感兴趣的:(iOS)