Phi*_*lip 31 objective-c uiactivityindicatorview sdwebimage
我正在使用SDWebView图像,我想显示一个活动指示器作为占位符,同时从远程获取图像.
我在这里尝试了Malek的答案如何在SDWebImage中显示活动指示器,但似乎如此
UIImage *cachedImage = [manager imageWithURL:url];
Run Code Online (Sandbox Code Playgroud)
已弃用.
是否有人使用此库可以告诉我如何在加载图像时插入活动指示器?
编辑
根据Michael Frederick的指示,我最终得到了这段代码,一切正常.
UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
activityIndicator.hidesWhenStopped = YES;
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
activityIndicator.center = CGPointMake(self.tipImage.frame.size.width /2, self.tipImage.frame.size.height/2);
[imageView setImageWithURL:[NSURL URLWithString:imageString]
placeholderImage:nil options:SDWebImageProgressiveDownload
success:^(UIImage *image) { [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }
failure:^(NSError *error) { [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }];
[imageView addSubview:activityIndicator];
Run Code Online (Sandbox Code Playgroud)
Mic*_*ick 47
但是,一般来说,你可以在不使用该分支的情况下轻松地完成它:
__block UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:activityStyle];
activityIndicator.center = imageView.center;
activityIndicator.hidesWhenStopped = YES;
[imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]
success:^(UIImage *image) { [activityIndicator removeFromSuperview]; }
failure:^(NSError *error) { [activityIndicator removeFromSuperview]; }];
[imageView addSubview:activityIndicator];
[activityIndicator startAnimating];
Run Code Online (Sandbox Code Playgroud)
Zal*_*ldy 22
这是你如何做到的:
[imageView setIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[imageView setShowActivityIndicatorView:true];
[imageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"defaultl_image"]];Run Code Online (Sandbox Code Playgroud)
Can*_*rek 17
那是我的解决方案.在该文件中:UIImageView + WebCache.m
找到那个方法并改变:
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder
{
UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyleGray)];
[activity startAnimating];
[activity setFrame:CGRectMake(self.frame.origin.x - 20, self.frame.origin.y - 10, self.frame.size.width, self.frame.size.height)];
[self addSubview:activity];
//[self setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
[self setImageWithURL:url
placeholderImage:placeholder
options:0
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
{
[activity removeFromSuperview];
}];
}
Run Code Online (Sandbox Code Playgroud)
E-R*_*die 15
您可以下载UIActivityIndicator-for-SDWebImage,这是向您的SDWebImage视图添加UIActivityView的最简单方法.使用CocoaPods,只需将此行添加到podfile:
pod 'UIActivityIndicator-for-SDWebImage'
Run Code Online (Sandbox Code Playgroud)
您可以根据自己的喜好使用以下其中一行:
- (void)setImageWithURL:(NSURL *)url usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletionBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
Run Code Online (Sandbox Code Playgroud)
只需导入
#import <UIActivityIndicator-for-SDWebImage/UIImageView+UIActivityIndicatorForSDWebImage.h>
Run Code Online (Sandbox Code Playgroud)
并使用此代码
[imageView setImageWithURL:[NSURL URLWithString:@"https://media.licdn.com/mpr/mpr/wc_200_200/p/1/005/07f/0a3/30cb8dd.jpg"] placeholderImage:[UIImage imageNamed:@"myImage.jpg"] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
Run Code Online (Sandbox Code Playgroud)
SDWebImage 有一个完美的内置活动指示器。尝试这个:
更新:SWIFT 5 SDWebImage 5.xx
imgView.sd_imageIndicator = SDWebImageActivityIndicator.gray
imgView.sd_setImage(with: url, placeholderImage: UIImage(named: "placeholder"))
Run Code Online (Sandbox Code Playgroud)
斯威夫特 3:
imgView.setShowActivityIndicator(true)
imgView.setIndicatorStyle(.gray)
imgView.sd_setImage(with: URL(string: urlString), placeholderImage: UIImage(named: "placeholder"))
Run Code Online (Sandbox Code Playgroud)
对于 Swift 5.0 和 SDWebImage 5.0 :
代替
imageView.sd_setShowActivityIndicatorView(true)
imageView.sd_setIndicatorStyle(.gray)
Run Code Online (Sandbox Code Playgroud)
经过
imageView.sd_imageIndicator = SDWebImageActivityIndicator.gray
Run Code Online (Sandbox Code Playgroud)
上面的代码有点不对.行'activityIndicator.center = imageView.center'没有为您提供正确的坐标以使进度视图居中.对我来说,它显示了细胞下方的指标.
注意 - 我使用的是最新版本的SDWebImage代码,因此方法略有不同.我也在使用UIButton作为imageView
试试这个:
NSURL *url = [NSURL URLWithString:@"www.someimageurl.com"];
__block UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.frame = cell.imageView.bounds;
[cell.imageView addSubview:activityIndicator];
[activityIndicator startAnimating];
[cell.imageView setImageWithURL:url forState:UIControlStateNormal completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
[activityIndicator removeFromSuperview];
}];
Run Code Online (Sandbox Code Playgroud)
我相信最新版本的sdwebimage这是一个更好的方法.
[self.customImageView setImageWithURL:imageURL
placeholderImage:nil
options:nil
progress:^(NSUInteger receivedSize, long long expectedSize) { [self.activityIndicator startAnimating]; }
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { [self.activityIndicator stopAnimating]; }];
Run Code Online (Sandbox Code Playgroud)
注意:如果您没有属性设置,很明显self.activityindicator将无法正常工作.
我会用Michael Frederick的例子来创建activityindicator.
| 归档时间: |
|
| 查看次数: |
23530 次 |
| 最近记录: |