ios 简单的网络图片轮训

来源:互联网 发布:mac好用的流程图软件 编辑:程序博客网 时间:2024/06/05 04:28

0.截图



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];        //这里大家可以换成自己的网络请求图片的方法        [[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++) {                       //方法一:直接设置每个cell的X坐标//            LJPhotoGroupCellView *_cell = [[LJPhotoGroupCellView alloc]initWithFrame:CGRectMake((kDEVICEWIDTH )*i, 0, kDEVICEWIDTH, 130) url:self.ljItemArray[i]];                        //方法二:先不用考虑cell的X坐标,在下面设置X的坐标            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];        }                //方法二:设置cell的X坐标        // 计算imageView的位置        [self.ljScrollView.subviews enumerateObjectsUsingBlock:^(LJPhotoGroupCellView *cell, NSUInteger idx, BOOL *stop)         {            // 调整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)    {        // 分页控件,本质上和scrollView没有任何关系,是两个独立的控件        _ljPageControl = [[UIPageControl alloc] init];        // 总页数        _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);                // 设置颜色        _ljPageControl.pageIndicatorTintColor = [UIColor redColor];        //当前页面的颜色        _ljPageControl.currentPageIndicatorTintColor = [UIColor whiteColor];        [_ljPageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];    }    return _ljPageControl;}// 分页控件的监听方法- (void)pageChanged:(UIPageControl *)page{    NSLog(@"%ld", (long)page.currentPage);        // 根据页数,调整滚动视图中的图片位置 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的代理方法// 滚动视图停下来,修改页面控件的小点(页数)- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    // 停下来的当前页数    NSLog(@"%@", NSStringFromCGPoint(scrollView.contentOffset));        // 计算页数    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