Я создаю слайд-шоу с использованием UIImageView
, а ссылки изображения находятся в массиве, поэтому пока я был на нем, я узнал, что SDWebImageManager
позволяет сразу ударять по URL-адресам, а затем кэширует изображения для последующего использования.iOS: SDWebImageManager не кэширует изображение
Но то, что я контролирую в своем приложении, заключается в том, что первое изображение кэшируется, я считаю, но второй URL-адрес изображения всегда попадает.
Вот мой код:
- (void)viewDidLoad {
[super viewDidLoad];
arry = [[NSMutableArray alloc] init];
[arry addObject:@"http://adjingo.2cimple.com/content/151/Image/6291.jpg"];
[arry addObject:@"http://adjingo.2cimple.com/content/151/Image/6290.jpg"];
NSURL *imageURL = [NSURL URLWithString:[arry objectAtIndex:0]];
__block UIActivityIndicatorView *activityIndicator;
__weak UIImageView *weakImageView = self.imageView;
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:imageURL
options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
// progression tracking code
if (!activityIndicator) {
[weakImageView addSubview:activityIndicator = [UIActivityIndicatorView.alloc initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]];
//activityIndicator.center = self.imageView.center;
[activityIndicator startAnimating];
}
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
if (image) {
// do something with image
[activityIndicator removeFromSuperview];
activityIndicator = nil;
[self.imageView setImage:image];
}
}];
//Timer to do slideshow for images
timer = [NSTimer scheduledTimerWithTimeInterval: 5.0
target: self
selector: @selector(handleTimer:)
userInfo: nil
repeats: YES];
}
Вот handleTimer
код, чтобы перезагрузить изображение с точки зрения изображения, каждые 5 секунд:
-(void) handleTimer: (NSTimer *) timer {
currentImage++;
if (currentImage >= arry.count)
currentImage = 0;
__block UIActivityIndicatorView *activityIndicator;
__weak UIImageView *weakImageView = self.imageView;
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:imageURL
options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
// progression tracking code
if (!activityIndicator) {
[weakImageView addSubview:activityIndicator = [UIActivityIndicatorView.alloc initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]];
//activityIndicator.center = self.imageView.center;
[activityIndicator startAnimating];
}
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
if (image) {
// do something with image
[activityIndicator removeFromSuperview];
activityIndicator = nil;
[self.imageView setImage:image];
}
}];
}
Вот где я могу контролировать использование сети:
Прошу вас, если я неправильно использовал SDWebImageManager
.
Благодаря
Никто не знает ??? – hyd00