3
我使用SDWebimage加载和缓存图片,现在我正在寻找一种方法来滑动/滚动图片。我尝试过不同的方法,但我似乎无法得到它的工作,有人可以帮助我吗?SDWebimage滚动
我使用SDWebimage加载和缓存图片,现在我正在寻找一种方法来滑动/滚动图片。我尝试过不同的方法,但我似乎无法得到它的工作,有人可以帮助我吗?SDWebimage滚动
你只需做你的滚动图片浏览器,你原本可以达到的,但不是同步设置image
属性,你只需要调用的方法SDWebImage
setImageWithURL
(从UIImageView
类)。
要告诉你一个快速和肮脏的实施,创建一个UIScrollView
,打开页面,并在viewDidLoad
可以设置内容大小和加载第一图像,像这样:
[self.scrollView setContentSize:CGSizeMake(self.view.bounds.size.width * [self.objects count],
self.view.bounds.size.height)];
dispatch_async(dispatch_get_main_queue(), ^{
ImageBrowserObject *object = self.objects[0];
[object scrollView:self.scrollView addImageViewIfNeededForIndex:0];
});
你也想设置你的控制器作为该滚动视图的委托,然后处理scrollViewDidScroll
事件:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
static NSInteger lastKnownIndex = -1;
NSInteger currentIndex = scrollView.contentOffset.x/scrollView.frame.size.width + 0.5f;
NSInteger nextIndex = currentIndex + 1;
NSInteger prevIndex = currentIndex - 1;
if (prevIndex < 0) prevIndex = 0;
if (currentIndex == lastKnownIndex)
return;
// add the imageviews we need, remove the ones we don't
[self.objects enumerateObjectsUsingBlock:^(ImageBrowserObject *object, NSUInteger idx, BOOL *stop) {
if (idx >= prevIndex && idx <= nextIndex)
[object scrollView:scrollView addImageViewIfNeededForIndex:idx];
else
[object scrollView:scrollView removeImageViewIfNeededForIndex:idx];
}];
lastKnownIndex = currentIndex;
}
而且我ImageBrowserObject
定义如下:
@interface ImageBrowserObject : NSObject
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSURL *url;
@property (nonatomic, weak) UIImageView *imageView;
@end
@implementation ImageBrowserObject
- (id)initWithTitle:(NSString *)title URL:(NSURL *)url
{
self = [super init];
if (self) {
_title = title;
_url = url;
}
return self;
}
- (void)scrollView:(UIScrollView *)scrollView addImageViewIfNeededForIndex:(NSInteger)index
{
if (self.imageView)
return;
CGRect frame = CGRectMake(index * scrollView.frame.size.width,
0.0,
scrollView.frame.size.width,
scrollView.frame.size.height);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
[scrollView addSubview:imageView];
[imageView setImageWithURL:self.url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
self.imageView = imageView;
}
- (void)scrollView:(UIScrollView *)scrollView removeImageViewIfNeededForIndex:(NSInteger)index
{
if (!self.imageView)
return;
[self.imageView removeFromSuperview];
self.imageView = nil;
}
@end
这是一个非常简单的实现,但我怀疑你明白了。
试过MWPhotoBrowser ???/ – 2013-04-04 12:32:01
这不使用SDWebimage缓存,这是我的应用程序中最重要的事情 – Daantjeeuh 2013-04-04 12:39:50