美文网首页
IOS框架:使用图片类框架

IOS框架:使用图片类框架

作者: 时光啊混蛋_97boy | 来源:发表于2020-11-05 09:41 被阅读0次

    原创:知识点总结性文章
    创作不易,请珍惜,之后会持续更新,不断完善
    个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈,这些文章记录了我的IOS成长历程,希望能与大家一起进步
    温馨提示:由于简书不支持目录跳转,大家可通过command + F 输入目录标题后迅速寻找到你所需要的内容

    目录

    • 一、SDWebImage
    • 二、SDCycleScrollView
    • Demo
    • 参考文献

    一、SDWebImage

    多数情况下是使用UIImageView+WebCacheUIImageView异步加载图片:

    #import <SDWebImage/UIImageView+WebCache.h>
    
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    

    它还支持block语法,用于在加载完成时做一些操作:

    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
        ... completion code here ...
    }];
    

    SDWebImage并不局限于UIImageView,使用SDWebImageManager可完成更多的操作:

    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    [manager downloadWithURL:imageURL options:0 progress:^(NSUInteger receivedSize, long long expectedSize) {
        // 下载进度
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
        if (image)
        {
            // 下载完成
        }
    }];
    

    或者使用Image Downloader也是一样的效果:

    [SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL options:0 progress:^(NSUInteger receivedSize, long long expectedSize) {
        // 进度
    } completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
        if (image && finished)
        {
            // 下载完成
        }
    }];
    

    二、SDCycleScrollView

    1、运行效果

    2020-11-06 16:15:52.954175+0800 UseImageFrameworkDemo[57996:6002992] 滚动到第2张图
    2020-11-06 16:15:54.634164+0800 UseImageFrameworkDemo[57996:6002992] 滚动到第0张图
    .......
    
    SDCycleScrollView

    2、带标题的网络图片

    - (void)URLImage
    {
        SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 100, SCREEN_WIDTH, 200) delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];
        // page位置,默认居中
        cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentRight;
        // 自定义分页控件小圆标颜色
        cycleScrollView.currentPageDotColor = [UIColor whiteColor];
        // 添加标题
        cycleScrollView.titlesGroup = _titles;
        [_ContainerView addSubview:cycleScrollView];
        
        // 模拟加载延迟
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            cycleScrollView.imageURLStringsGroup = self->_imagesURLStrings;
        });
        
        // block监听点击方式
        cycleScrollView.clickItemOperationBlock = ^(NSInteger currentIndex) {
            NSLog(@"block监听点击方式,位置为:%ld", (long)currentIndex);
        };
    }
    

    3、自定义分页控件

    - (void)pageDot
    {
        SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 350, SCREEN_WIDTH, 200) delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];
        cycleScrollView.currentPageDotImage = [UIImage imageNamed:@"pageControlCurrentDot"];
        cycleScrollView.pageDotImage = [UIImage imageNamed:@"pageControlDot"];
        [_ContainerView addSubview:cycleScrollView];
        
        // 模拟加载延迟
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            cycleScrollView.imageURLStringsGroup = self->_imagesURLStrings;
        });
    }
    

    4、本地图片

    - (void)localImage
    {
        SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 650, SCREEN_WIDTH, 300) shouldInfiniteLoop:YES imageNamesGroup:_imageNames];
        cycleScrollView.scrollDirection = UICollectionViewScrollDirectionVertical;
        
        // 仅显示文字
        NSMutableArray *titlesArray = [NSMutableArray new];
        [titlesArray addObject:@"纯文字"];
        [titlesArray addObjectsFromArray:_titles];
        cycleScrollView.titlesGroup = [titlesArray copy];
        [cycleScrollView disableScrollGesture];
        
        [_ContainerView addSubview:cycleScrollView];
    }
    

    5、自定义cell的轮播图

    a、如果要实现自定义cell的轮播图,必须先实现代理方法
    - (void)customCell
    {
        _customCellScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 1000, SCREEN_WIDTH, 200) delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];
        _customCellScrollView.imageURLStringsGroup = _imagesURLStrings;
        [_ContainerView addSubview:_customCellScrollView];
    }
    
    b、点击图片回调
    - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index
    {
        NSLog(@"点击了第%ld张图片", (long)index);
        [self.navigationController pushViewController:[NSClassFromString(@"DemoVC") new] animated:YES];
    }
    
    c、滚动到第几张图回调
    - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index
    {
        NSLog(@"滚动到第%ld张图", (long)index);
    }
    

    Demo

    Demo在我的Github上,欢迎下载。
    UseFrameworkDemo

    参考文献

    相关文章

      网友评论

          本文标题:IOS框架:使用图片类框架

          本文链接:https://www.haomeiwen.com/subject/uerovktx.html