IOS框架:使用图片类框架
2020-11-05 本文已影响0人
时光啊混蛋_97boy
原创:知识点总结性文章
创作不易,请珍惜,之后会持续更新,不断完善
个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈,这些文章记录了我的IOS成长历程,希望能与大家一起进步
温馨提示:由于简书不支持目录跳转,大家可通过command + F 输入目录标题后迅速寻找到你所需要的内容
目录
- 一、SDWebImage
- 二、SDCycleScrollView
- Demo
- 参考文献
一、SDWebImage
多数情况下是使用UIImageView+WebCache
为UIImageView
异步加载图片:
#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张图
.......
![](https://img.haomeiwen.com/i9570900/5baf1ff6ede56a83.gif)
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