需求 - 4 - 滚动广播文字 - 2

本文介绍了一种通过动画实现ScrollView内容平滑位移的技术,包括如何在iOS应用中利用Core Animation进行位移操作,并提供了关键代码示例。进入后台后动画效果会停止,但文章提出了多种解决方案。
摘要由CSDN通过智能技术生成

我们还可以通过纯粹的动画来达到这种效果,上篇是通过计时器移动scrollView的content位置来达成效果的


#import "LBScrollSubtitleViewController.h"

@interface LBScrollSubtitleViewController ()

@property (nonatomic, strong) UILabel* textLabel;

@end

@implementation LBScrollSubtitleViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.textLabel = [[UILabel alloc] init];
    [self.textLabel setFrame:CGRectMake(0, 0, 250, 35)];
    [self.textLabel setCenter:self.view.center];
    
    [self.view addSubview:self.textLabel];
    
    NSString* text = @"Night gathers, and now my watch begins. It shall not end until my death. ";
    
    [self.textLabel setText:text];
    
    [self startAnimationIfNeeded];
}

- (void)startAnimationIfNeeded
{
    [self.textLabel.layer removeAllAnimations];
    
    CGSize textSize = [self.textLabel.text sizeWithFont:self.textLabel.font];
    CGRect iFrame = self.textLabel.frame;
    //保持高度不变,宽度设置成文字的大小的宽度
    iFrame.size.width = textSize.width;
    
    self.textLabel.frame = iFrame;
    const float oriWidth = 180.0;
    
    if (textSize.width > oriWidth)
    {
        NSLog(@"text width : %f", textSize.width);
        
        //取180的差值
        float offset = textSize.width - oriWidth;
        NSLog(@"offset :%f", offset);
        
        [UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionRepeat      |
         
                                                       UIViewAnimationOptionCurveLinear
        animations:^{
        
            self.textLabel.transform = CGAffineTransformMakeTranslation(-offset, 0);
            
        } completion:^(BOOL finished){   }];
    }
    
}

@end


这种实现一个相当的坏处就是进入后台之后回来应用的动画效果就停止了,但是也有相当多的方法来解决。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值