溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IOS 開發(fā)之網(wǎng)絡(luò)圖片輪播圖的實(shí)現(xiàn)

發(fā)布時(shí)間:2020-09-26 11:14:14 來源:腳本之家 閱讀:129 作者:水桶前輩 欄目:移動(dòng)開發(fā)

IOS 開發(fā)之網(wǎng)絡(luò)圖片輪播圖的實(shí)現(xiàn)

截圖

IOS 開發(fā)之網(wǎng)絡(luò)圖片輪播圖的實(shí)現(xiàn)

1.使用

LJPhotoGroupView *_ljPhotoGroupView = [[LJPhotoGroupView alloc]initWithItem:self.ljUrlArray]; 
_ljPhotoGroupView.backgroundColor = [UIColor blackColor]; 
_ljPhotoGroupView.frame = CGRectMake(0, 0, kDEVICEWIDTH, kDEVICEHEIGHT); 
[_ljPhotoGroupView showHintView:self]; 

2.源碼

#import "LJPhotoGroupView.h" 
#import "LJWebIDataManager.h" 
 
@interface LJPhotoGroupCellView() 
 
@property (nonatomic, strong) UIImageView *ljImageview; 
 
@end 
 
@implementation LJPhotoGroupCellView 
 
- (instancetype)initWithFrame:(CGRect)frame url:(NSString*)imageurl 
{ 
  self = [super initWithFrame:frame]; 
  if (self) { 
    [self addSubview:self.ljImageview]; 
    //這里大家可以換成自己的網(wǎng)絡(luò)請(qǐng)求圖片的方法 
    [[LJWebIDataManager sharedInstances]retrieveData:imageurl successBlock:^(NSData *netData, NSString *progressStr, BOOL isFinished) { 
      //在主線程中刷新界面 
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
 
        UIImage *_ljImage = [UIImage imageWithData: netData scale:0.3]; 
        @myWeakify(self); 
        dispatch_async(dispatch_get_main_queue(), ^{ 
          @myStrongify(self); 
          self.ljImageview.image = _ljImage; 
        }); 
      }); 
    }]; 
  } 
  return self; 
} 
 
- (UIImageView*)ljImageview 
{ 
  if (!_ljImageview) { 
    _ljImageview = UIImageView.new; 
    _ljImageview.frame = CGRectMake(15, 0, kDEVICEWIDTH - 30, 130); 
    _ljImageview.backgroundColor = [UIColor redColor]; 
    UIGestureRecognizer *_tap = [[UIGestureRecognizer alloc]initWithTarget:self action:@selector(dismissHintView)]; 
    [_ljImageview addGestureRecognizer:_tap]; 
  } 
  return _ljImageview; 
} 
 
@end 
 
@interface LJPhotoGroupView()<UIScrollViewDelegate> 
 
@property (nonatomic, strong) UIScrollView *ljScrollView; 
@property (nonatomic, strong) NSArray *ljItemArray; 
@property (nonatomic, strong) UIImageView *ljImageview; 
@property (nonatomic, strong) UIPageControl *ljPageControl; 
 
 
@end 
 
@implementation LJPhotoGroupView 
 
- (instancetype)initWithItem:(NSArray*)ljArray 
{ 
  self = [super init]; 
  if (self) 
  { 
    self.ljItemArray = [NSArray arrayWithArray:ljArray]; 
     
    [self addSubview:self.ljScrollView]; 
    [self addSubview:self.ljPageControl]; 
     
    for (int i = 0; i < self.ljItemArray.count; i++) { 
       
      //方法一:直接設(shè)置每個(gè)cell的X坐標(biāo) 
//      LJPhotoGroupCellView *_cell = [[LJPhotoGroupCellView alloc]initWithFrame:CGRectMake((kDEVICEWIDTH )*i, 0, kDEVICEWIDTH, 130) url:self.ljItemArray[i]]; 
       
      //方法二:先不用考慮cell的X坐標(biāo),在下面設(shè)置X的坐標(biāo) 
      LJPhotoGroupCellView *cell = [[LJPhotoGroupCellView alloc]initWithFrame:self.ljScrollView.bounds url:self.ljItemArray[i]]; 
      UITapGestureRecognizer *_tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissHintView)]; 
        [cell addGestureRecognizer:_tap]; 
      [self.ljScrollView addSubview:cell]; 
    } 
     
    //方法二:設(shè)置cell的X坐標(biāo) 
    // 計(jì)算imageView的位置 
    [self.ljScrollView.subviews enumerateObjectsUsingBlock:^(LJPhotoGroupCellView *cell, NSUInteger idx, BOOL *stop) 
     { 
      // 調(diào)整x => origin => frame 
      CGRect frame = cell.frame; 
      frame.origin.x = idx * frame.size.width; 
       
      cell.frame = frame; 
    }]; 
     
    self.ljPageControl.currentPage = 0; 
  } 
  return self; 
} 
 
- (UIScrollView*)ljScrollView 
{ 
  if (!_ljScrollView) 
  { 
    _ljScrollView = UIScrollView.new; 
    _ljScrollView.frame = CGRectMake(0, 250, kDEVICEWIDTH, 130); 
    _ljScrollView.delegate = self; 
    //_scrollView.scrollsToTop = NO; 
    _ljScrollView.pagingEnabled = YES; 
    _ljScrollView.contentSize = CGSizeMake(_ljScrollView.bounds.size.width * self.ljItemArray.count, 130); 
    //_scrollView.alwaysBounceHorizontal = groupItems.count > 1; 
    // _scrollView.showsHorizontalScrollIndicator = NO; 
    //_scrollView.showsVerticalScrollIndicator = NO; 
    //_scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    //_scrollView.delaysContentTouches = NO; 
    //_scrollView.canCancelContentTouches = YES; 
  } 
  return _ljScrollView; 
} 
 
- (UIPageControl *)ljPageControl 
{ 
  if (_ljPageControl == nil) 
  { 
    // 分頁控件,本質(zhì)上和scrollView沒有任何關(guān)系,是兩個(gè)獨(dú)立的控件 
    _ljPageControl = [[UIPageControl alloc] init]; 
    // 總頁數(shù) 
    _ljPageControl.numberOfPages = self.ljItemArray.count; 
    CGSize size = [_ljPageControl sizeForNumberOfPages:self.ljItemArray.count]; 
     
    _ljPageControl.bounds = CGRectMake(0, 0, size.width, size.height); 
    _ljPageControl.center = CGPointMake(self.center.x, 380); 
     
    // 設(shè)置顏色 
    _ljPageControl.pageIndicatorTintColor = [UIColor redColor]; 
    //當(dāng)前頁面的顏色 
    _ljPageControl.currentPageIndicatorTintColor = [UIColor whiteColor]; 
    [_ljPageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged]; 
  } 
  return _ljPageControl; 
} 
 
// 分頁控件的監(jiān)聽方法 
- (void)pageChanged:(UIPageControl *)page 
{ 
  NSLog(@"%ld", (long)page.currentPage); 
   
  // 根據(jù)頁數(shù),調(diào)整滾動(dòng)視圖中的圖片位置 contentOffset self.scrollView.bounds.size.width 
  CGFloat x = page.currentPage * (kDEVICEWIDTH); 
  [self.ljScrollView setContentOffset:CGPointMake(x, 0) animated:YES]; 
} 
 
- (UIImageView*)ljImageview 
{ 
  if (!_ljImageview) { 
    _ljImageview = UIImageView.new; 
    _ljImageview.frame = CGRectMake(0, 0, kDEVICEWIDTH, kDEVICEHEIGHT); 
    _ljImageview.backgroundColor = [UIColor redColor]; 
     
    UIGestureRecognizer *_tap = [[UIGestureRecognizer alloc]initWithTarget:self action:@selector(dismissHintView)]; 
    [_ljImageview addGestureRecognizer:_tap]; 
  } 
  return _ljImageview; 
} 
 
 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
  //CGFloat floatPage = _scrollView.contentOffset.x / _scrollView.width; 
  //NSInteger page = _scrollView.contentOffset.x / _scrollView.width; 
} 
 
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 
  if (!decelerate) { 
  } 
} 
 
 
#pragma mark - ScrollView的代理方法 
// 滾動(dòng)視圖停下來,修改頁面控件的小點(diǎn)(頁數(shù)) 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
  // 停下來的當(dāng)前頁數(shù) 
  NSLog(@"%@", NSStringFromCGPoint(scrollView.contentOffset)); 
   
  // 計(jì)算頁數(shù) 
  int page = scrollView.contentOffset.x / scrollView.bounds.size.width; 
   
  self.ljPageControl.currentPage = page; 
} 
 
 
- (void)showHintView:(UIView*)view 
{ 
  //[view addSubview:self]; 
   [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:self]; 
   
  self.alpha = 0.0; 
  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
     
    self.alpha = 1.0; 
     
  } completion:^(BOOL finished) 
   { 
      
   }]; 
} 
 
- (void)dismissHintView 
{ 
  [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ 
     
    self.alpha = 0.0; 
     
  } completion:^(BOOL finished){ 
     
    [self removeFromSuperview]; 
  }]; 
} 
 
@end 

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI