| 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
 
 
  |