国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS實現輪播圖banner示例

2020-07-26 02:57:40
字體:
來源:轉載
供稿:網友

樓主項目中需要有一個輪播圖,因為比較簡單,就自己寫了個,因為是從網上弄得圖片 所以用了SDWebImage 這個三方庫 當然自己也可以去掉

類型后面有*號 如用使用 請自行加上。。。。。

代碼:.h 文件

@protocol TJXViewDelegate<NSObject>//判斷點擊的那個-(void)sendImageName:(TJXView *)TJXView andName:(NSInteger)selectImage;@end@interface TJXView : UIView@property (nonatomic,weak)id<TJXViewDelegate>delegate;//傳一個frame 和 裝有圖片名字的數組過來//參數一:frame//參數二:裝有圖片名字的數組//參數三:BOOL如果是YES,那么自動滾動,如果是NO不滾動-(id)initWithFrame:(CGRect)frame andImageNameArray:(NSMutableArray * )imageNameArray andIsRunning:(BOOL)isRunning;@end

.m文件

@interface TJXView()<UIScrollViewDelegate>{  NSInteger _currentPage; //記錄真實的頁碼數  NSTimer *_timer; //生命一個全局變量}@property (nonatomic,assign) BOOL isRun;@property (nonatomic,strong) NSMutableArray *imageArray;//存儲圖片的名字@property (nonatomic,strong) UIScrollView *scrollView;@property (nonatomic,strong) UIPageControl *pageControl;@property (nonatomic,assign) CGFloat width;//view的寬@property (nonatomic,assign) CGFloat height;//view的高@end-(id)initWithFrame:(CGRect)frame andImageNameArray:(NSMutableArray *)imageNameArray andIsRunning:(BOOL)isRunning{  self = [super initWithFrame:frame];  if (self) {    _width = self.frame.size.width;    _height = self.frame.size.height;    //arrayWithArray 把數組中的內容放到一個數組中返回    self.imageArray = [NSMutableArray arrayWithArray:imageNameArray];    //在數組的尾部添加原數組第一個元素    [self.imageArray addObject:[imageNameArray firstObject]];    //在數組的首部添加原數組最后一個元素    [self.imageArray insertObject:[imageNameArray lastObject] atIndex:0];    self.isRun = isRunning;    _currentPage = 0;    [self createSro];    [self createPageControl];    [self createTimer];  }  return self;}-(void)createTimer{  if (_isRun == YES) {    _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(change) userInfo:nil repeats:YES ];    [[NSRunLoop currentRunLoop]addTimer:_timer forMode:NSRunLoopCommonModes];  }}-(void)change{  //1獲得當前的點  CGPoint point = _scrollView.contentOffset;  //2求得將要變換的點  CGPoint endPoint = CGPointMake(point.x+_width, 0);  //判斷  if (endPoint.x == (self.imageArray.count-1)*_width) {    [UIView animateWithDuration:0.25 animations:^{      _scrollView.contentOffset = CGPointMake(endPoint.x, 0);    } completion:^(BOOL finished) {      //動畫完成的block      _scrollView.contentOffset = CGPointMake(_width, 0);      CGPoint realEnd = _scrollView.contentOffset;      //取一遍頁碼數      _currentPage = realEnd.x/_width;      _pageControl.currentPage = _currentPage-1;    }];  }  else{    //0.25s中更改一個圖片    [UIView animateWithDuration:0.25 animations:^{      _scrollView.contentOffset = endPoint;    } completion:^(BOOL finished) {    }];        CGPoint realEnd = _scrollView.contentOffset;    //取一遍頁碼數    _currentPage = realEnd.x/_width;    _pageControl.currentPage = _currentPage-1;  }  }//創建頁碼指示器-(void)createPageControl{  _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(_width-200, _height-30, 100, 30)];  _pageControl.centerX = _width/2;  _pageControl.numberOfPages = self.imageArray.count-2;  _pageControl.pageIndicatorTintColor = WP_GRAY_COLOR;  _pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];  _pageControl.userInteractionEnabled = NO;  [self addSubview:_pageControl];}//創建滾動視圖-(void)createSro{  _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, _width, _height)];  _scrollView.contentSize = CGSizeMake(_width*self.imageArray.count, _height);  for (int i = 0; i < self.imageArray.count; i++) {    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i*_width, 0, _width, _height)];//    imageView.image = [UIImage imageNamed:self.imageArray[i]];    [imageView sd_setImageWithURL:self.imageArray[i] placeholderImage:[UIImage imageNamed:@"home_banner_blank"]];    imageView.userInteractionEnabled = YES;    imageView.tag = 200+i;    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];    [imageView addGestureRecognizer:tap];    [_scrollView addSubview:imageView];  }  //水平指示條不顯示  _scrollView.showsHorizontalScrollIndicator = NO;  //關閉彈簧效果  _scrollView.bounces = NO;  //設置用戶看到第一張  _scrollView.contentOffset = CGPointMake(_width, 0);  //設置代理  _scrollView.delegate = self;  //分頁效果  _scrollView.pagingEnabled = YES;  [self addSubview:_scrollView];}-(void)tap:(UITapGestureRecognizer *)tap{  if(_delegate&&[_delegate respondsToSelector:@selector(sendImageName:andName:)]){    [_delegate sendImageName:self andName:tap.view.tag-201];  }else{    NSLog(@"沒有設置代理或者沒有事先協議的方法");  } }#pragma mark UIScrollViewDelegate//停止滾動-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{  if (_timer) {    [_timer setFireDate:[NSDate dateWithTimeIntervalSinceNow:2]];  }  //圖片的個數 1 2 3 4 5 6 7 8  //真實的頁碼 0 1 2 3 4 5 6 7  //顯示的頁碼  0 1 2 3 4 5  CGPoint point = _scrollView.contentOffset;  if (point.x == (self.imageArray.count-1)*_width) {    scrollView.contentOffset = CGPointMake(_width, 0);  }  if (point.x == 0) {    scrollView.contentOffset = CGPointMake((self.imageArray.count-2)*_width, 0);  }  //取一遍頁碼數  CGPoint endPoint = scrollView.contentOffset;  _currentPage = endPoint.x/_width;  _pageControl.currentPage = _currentPage-1;}//手指開始觸摸的時候,停止計時器-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{  if (_timer) {    //如果有,停掉    [_timer setFireDate:[NSDate distantFuture]];  }}

在項目中  導入頭文件  遵守代理

    TJXView * TJXView = [[TJXView alloc]initWithFrame:CGRectMake(0, 0, WPSCREEN_WIDTH, 100*WPSCREEN_HIGTH_RATIO) andImageNameArray:self.bannerImager andIsRunning:YES];    TJXView.delegate = self;    [self.view addSubview: TJXView];#pragma mark TJXViewDelegate-(void)sendImageName:(TJXView *) TJXView andName:(NSInteger)selectImage{   KKLog(@"%ld",(long)selectImage);}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 廉江市| 普宁市| 舟山市| 黔南| 麻城市| 巴青县| 安远县| 炎陵县| 大兴区| 阳春市| 太谷县| 大化| 石城县| 宁陕县| 城市| 丰宁| 金寨县| 大城县| 皋兰县| 马鞍山市| 密山市| 油尖旺区| 雅江县| 龙海市| 隆安县| 普定县| 平定县| 巢湖市| 五指山市| 佛山市| 西安市| 大名县| 锡林浩特市| 民乐县| 碌曲县| 邛崃市| 嵩明县| 舟曲县| 石河子市| 县级市| 华阴市|