Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SDWebimage滚动_Ios_Objective C_Xcode_Uiscrollview_Sdwebimage - Fatal编程技术网

Ios SDWebimage滚动

Ios SDWebimage滚动,ios,objective-c,xcode,uiscrollview,sdwebimage,Ios,Objective C,Xcode,Uiscrollview,Sdwebimage,我使用SDWebimage来加载和缓存图片,现在我正在寻找一种在图片中滑动/滚动的方法。我尝试了不同的方法,但似乎无法正常工作,有人能帮我吗?您只需像其他方法一样使用滚动图像浏览器,而不是同步设置image属性,您只需调用SDWebImage方法setImageWithURL(从其UIImageView类别) 要显示一个快速而肮脏的实现,请创建一个UIScrollView,打开分页,然后在viewDidLoad中设置内容大小并加载第一个图像,如下所示: [self.scrollView setC

我使用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;
}

这是一个非常简单的实现,但我想你明白了。

尝试了MWPhotoBrowser???/这没有利用SDWebimage缓存,这是我应用程序中最重要的东西
@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