最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS實現(xiàn)循環(huán)滾動公告欄

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

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

封裝了一個繼承于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: - 開啟定時器
- (void)openTimer {
  if (!_scrollTimer) {
    _scrollTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerMoved) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:_scrollTimer forMode:NSRunLoopCommonModes];
  }
}
 
// MARK: - 關閉定時器
- (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;
  }
  // 為了展示滑動過程的流暢性,重新處理數(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: - 定時器調用方法
- (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調用代碼:

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

運行后的效果視頻:

公告內容用的label,無點擊效果,若需要。替換為button,添加手勢,都可以。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • iOS中 UIImage根據(jù)屏寬調整size的實例代碼

    iOS中 UIImage根據(jù)屏寬調整size的實例代碼

    最近做項目遇到這樣一個需求,要求UIImage根據(jù)屏幕寬度按照自己本身比例改變高度,下面通過本文給大家分享iOS UIImage根據(jù)屏寬調整size的實例代碼,需要的朋友參考下吧
    2017-01-01
  • iOS動畫實現(xiàn)雨花與櫻花特效

    iOS動畫實現(xiàn)雨花與櫻花特效

    小編今天為大家?guī)硪粓鲣冷罏r瀝的夜空之雨和滿天飛舞的櫻花之戀,希望能在炎炎夏日為您帶來一絲清爽的涼意!學習iOS動畫的小伙伴們可以參考學習。
    2016-08-08
  • iOS實現(xiàn)雷達掃描效果

    iOS實現(xiàn)雷達掃描效果

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)雷達掃描效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • iOS使用CoreMotion實現(xiàn)搖一搖功能

    iOS使用CoreMotion實現(xiàn)搖一搖功能

    這篇文章主要為大家詳細介紹了iOS使用CoreMotion實現(xiàn)搖一搖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • iOS編程學習中關于throttle的那些事

    iOS編程學習中關于throttle的那些事

    這篇文章主要給大家介紹了關于iOS編程學習中throttle的那些事,文中通過示例代碼介紹的非常詳細,對各位iOS的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母

    IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母

    這篇文章主要介紹了IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母,需要的朋友可以參考下
    2017-06-06
  • iOS中tableview實現(xiàn)編輯、全選及刪除等功能的方法示例

    iOS中tableview實現(xiàn)編輯、全選及刪除等功能的方法示例

    這篇文章主要給大家介紹了關于iOS中tableview實現(xiàn)編輯、全選及刪除等功能的相關資料,文中通過示例代碼介紹的非常詳細,不僅是介紹實現(xiàn)的方法,將實現(xiàn)過程中遇到的問題也都分享出來了,需要的朋友們下面來一起看看吧。
    2017-07-07
  • iOS WebView中使用webp格式圖片的方法

    iOS WebView中使用webp格式圖片的方法

    由于最近項目需求,需要將項目中圖片的加載做到同時兼容WebP格式,所以下面這篇文章主要給大家介紹了關于在iOS WebView中使用webp格式圖片的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • 詳解iOS App中UISwitch開關組件的基本創(chuàng)建及使用方法

    詳解iOS App中UISwitch開關組件的基本創(chuàng)建及使用方法

    UISwitch組件就是我們平時在iOS設置菜單中開到的那種左右滑動的開關按鈕,當然我們在開發(fā)時可以進行更多的自定義,這里我們就來詳解iOS App中UISwitch開關組件的基本創(chuàng)建及使用方法
    2016-05-05
  • IOS 獲取已連接的wifi信息的實現(xiàn)代碼

    IOS 獲取已連接的wifi信息的實現(xiàn)代碼

    這篇文章主要介紹了IOS 獲取已連接的wifi信息的實現(xiàn)代碼的相關資料,這里提供實現(xiàn)代碼幫助大家學習理解這部分內容,需要的朋友可以參考下
    2017-08-08

最新評論

苏尼特右旗| 广安市| 潜江市| 日土县| 牟定县| 买车| 青河县| 陕西省| 穆棱市| 临泉县| 韩城市| 淮安市| 惠州市| 渝中区| 运城市| 施甸县| 石嘴山市| 高碑店市| 通辽市| 屏南县| 望谟县| 达拉特旗| 陆丰市| 韶关市| 上思县| 荥经县| 乐东| 庄河市| 西峡县| 怀化市| 永登县| 喀什市| 蓬溪县| 年辖:市辖区| 古田县| 盘锦市| 溧水县| 上虞市| 台州市| 蒙山县| 七台河市|