gpt4 book ai didi

ios - SDWeb图像滚动

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:35 24 4
gpt4 key购买 nike

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

您还想将 Controller 设置为该 ScrollView 的委托(delegate),然后处理 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

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

关于ios - SDWeb图像滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com