| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | ////  VerScrollTextView.m//  ScrollMarqueeView////  Created by admin on 2021/1/28.//#import "VerScrollTextView.h"#import <Masonry/Masonry.h>@interface VerScrollTextView ()@property (nonatomic, strong) NSTimer *timer;@end@implementation VerScrollTextView-(UIView *)verBgView{    if (!_verBgView) {        _verBgView=[UIView new];        _verBgView.backgroundColor=[UIColor clearColor];        _verBgView.layer.masksToBounds=YES;    }    return _verBgView;}-(UILabel *)txtLabel{    if (!_txtLabel) {        _txtLabel=[UILabel new];        _txtLabel.font=[UIFont fontWithName:Rob_Regular size:14];        _txtLabel.numberOfLines=0;        _txtLabel.textAlignment = NSTextAlignmentCenter;        _txtLabel.textColor=[UIColor blackColor];    }    return _txtLabel;}- (void)dealloc {    [self.timer invalidate];    self.timer = nil;}-(instancetype)init{    self=[super init];        if (self) {                __weak typeof(self)  weakSelf=self;                [self addSubview:self.verBgView];        [self.verBgView addSubview:self.txtLabel];                [self.verBgView mas_makeConstraints:^(MASConstraintMaker *make) {            make.top.equalTo(weakSelf.mas_top).offset(10);            make.leading.equalTo(weakSelf.mas_leading).offset(10);            make.trailing.equalTo(weakSelf.mas_trailing).offset(-10);            make.bottom.equalTo(weakSelf.mas_bottom).offset(-10);        }];                [self.txtLabel mas_makeConstraints:^(MASConstraintMaker *make) {            make.leading.trailing.top.equalTo(weakSelf.verBgView);            make.bottom.equalTo(weakSelf.verBgView.mas_bottom);        }];                        self.arrNum=0;                            }    return self;}-(void)setSxArry:(NSMutableArray *)sxArry{    _sxArry=sxArry;    if (self.timer) {        [_timer invalidate];        self.timer = nil;    }    if (sxArry.count == 0) {        return;    }    if (self.arrNum >= sxArry.count) {        self.arrNum = 0;    }    @weakify(self);    self.timer = [NSTimer scheduledTimerWithTimeInterval:2 repeats:true block:^(NSTimer * _Nonnull timer) {        [weak_self scrollTxtAction];    }];    }-(void)checkDataIndex{        if (self.arrNum==self.sxArry.count-1) {        self.arrNum=0;    }else{        self.arrNum=self.arrNum+1;    }    }- (void)scrollTxtAction {        [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{                CATransition *transition = [CATransition animation];//        transition.duration = 0.3;        transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];        transition.type = kCATransitionPush;        transition.subtype = kCATransitionFromTop;        transition.delegate = self;        [self.txtLabel.layer addAnimation:transition forKey:nil];                [self checkDataIndex];            } completion:^(BOOL finished) {        if (self.arrNum >= self.sxArry.count) {            return;        }        self.txtLabel.text=self.sxArry[self.arrNum];//        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{////            [self scrollTxtAction];////        });            }];}@end
 |