ios 简单的网络图片轮训

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值