欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

      iOS實(shí)現(xiàn)循環(huán)滾動(dòng)公告欄

       更新時(shí)間:2021年03月19日 15:45:44   作者:xtayqria  
      這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)循環(huán)滾動(dòng)公告欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

      本文實(shí)例為大家分享了iOS實(shí)現(xiàn)循環(huán)滾動(dòng)公告欄的具體代碼,供大家參考,具體內(nèi)容如下

      封裝了一個(gè)繼承于UIView的類,如下:

      #import <UIKit/UIKit.h>
       
      NS_ASSUME_NONNULL_BEGIN
      @interface XtayNoticeScrollView : UIView
       
      - (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray<NSString *> *)titleArray; 
      - (void)openTimer;    
      - (void)closeTimer;
       
      @end
       
      NS_ASSUME_NONNULL_END
      #define ROW_H  self.bounds.size.height
       
      #import "XtayNoticeScrollView.h"
       
      @interface XtayNoticeScrollView ()
       
      /// scrollView
      @property (nonatomic, strong) UIScrollView *bgScrollView;
      /// titleArr
      @property (nonatomic, copy) NSArray *titleArr;
      /// timer
      @property (nonatomic, strong) NSTimer *scrollTimer;
       
      @end
       
      @implementation XtayNoticeScrollView
       
      - (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray<NSString *> *)titleArray {
        self = [super initWithFrame:frame];
        if (self) {
          self.titleArr = titleArray;
          [self addSubview:self.bgScrollView];
          [self createBaseView];
          [self openTimer];
        }
        return self;
      }
       
      // MARK: - 開(kāi)啟定時(shí)器
      - (void)openTimer {
        if (!_scrollTimer) {
          _scrollTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerMoved) userInfo:nil repeats:YES];
          [[NSRunLoop currentRunLoop] addTimer:_scrollTimer forMode:NSRunLoopCommonModes];
        }
      }
       
      // MARK: - 關(guān)閉定時(shí)器
      - (void)closeTimer {
        [_scrollTimer invalidate];
        _scrollTimer = nil;
      }
       
      - (UIScrollView *)bgScrollView {
        if (!_bgScrollView) {
          _bgScrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
          _bgScrollView.scrollEnabled = NO;
          _bgScrollView.showsVerticalScrollIndicator = NO;
          _bgScrollView.showsHorizontalScrollIndicator = NO;
          _bgScrollView.backgroundColor = UIColor.whiteColor;
        }
        return _bgScrollView;
      }
       
      // MARK: - 創(chuàng)建所有視圖
      - (void)createBaseView {
        // 安全判斷
        if (self.titleArr.count == 0) {
          return;
        }
        // 為了展示滑動(dòng)過(guò)程的流暢性,重新處理數(shù)組
        NSMutableArray *dataMArray = [NSMutableArray arrayWithCapacity:0];
        [dataMArray addObjectsFromArray:_titleArr];
        [dataMArray addObject:_titleArr.firstObject];
        for (int i = 0; i<dataMArray.count; i++) {
          UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, ROW_H*(i%dataMArray.count), self.bgScrollView.bounds.size.width, ROW_H)];
          label.text = dataMArray[i];
          label.font = [UIFont systemFontOfSize:15];
          label.textColor = [UIColor blackColor];
          label.numberOfLines = 0;
          [_bgScrollView addSubview:label];
        }
        _bgScrollView.contentSize = CGSizeMake(0, ROW_H*dataMArray.count);
      }
       
      // MARK: - 定時(shí)器調(diào)用方法
      - (void)timerMoved {
        CGFloat pageY = self.bgScrollView.contentOffset.y/ROW_H;
        int pageIntY = pageY;
        if (pageIntY >= self.titleArr.count) {
          [self.bgScrollView setContentOffset:CGPointMake(0, 0) animated:NO];
        } else {
          [self.bgScrollView setContentOffset:CGPointMake(0, (pageIntY+1)*ROW_H) animated:YES];
        }
      }

      VC調(diào)用代碼:

      XtayNoticeScrollView *notiView = [[XtayNoticeScrollView alloc] initWithFrame:CGRectMake(50, 100, self.view.frame.size.width-100, 50) titleArray:@[@"我是第一個(gè)數(shù)據(jù)-11111111111111", @"我是第二個(gè)數(shù)據(jù)-2222222", @"我是第三個(gè)數(shù)據(jù)-33333333"]];
        
      [self.view addSubview:notiView];

      運(yùn)行后的效果視頻:

      公告內(nèi)容用的label,無(wú)點(diǎn)擊效果,若需要。替換為button,添加手勢(shì),都可以。

      以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

      相關(guān)文章

      最新評(píng)論