0

这在 UIImageView 上不使用 AFNetworking 的类别方法时有效,但我意识到 AF 可能会覆盖所做的任何事情,因为这是异步发生的:

这是在我的自定义 UITableViewCell 中(自己是单元格):

NSURL *url = [NSURL URLWithString:video.thumbnail];    
[self.imageView setImageWithURL:url
               placeholderImage:[UIImage imageNamed:@"Logo.png"]];
// not working
CALayer *layer = [self.imageView layer];
[layer setMasksToBounds:YES];
[layer setCornerRadius:10.0];

也尝试将它放在调用 setImageWithURL 之前。

这是我现在拥有的,它不是圆角:

NSURL *url = [NSURL URLWithString:_video.thumbnail];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
UIImage *placeHolder = [UIImage imageNamed:@"Logo"];
__weak UIImageView *imageView = self.thumbnail;

[self.thumbnail setImageWithURLRequest:request placeholderImage:placeHolder success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

    imageView.image = image;
    // round the edges of the video thumbnail
    CALayer *layer = [imageView layer];
    [layer setMasksToBounds:YES];
    [layer setCornerRadius:8.0];

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    NSLog(@"couldn't load image: %@", [error localizedDescription]);
}];
4

3 回答 3

5
NSURLRequest *request = [NSURLRequest requestWithURL:url];
__weak UIImageView *imageView = self.imageView;
[self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"Logo.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    imageView.image = image;
    CALayer *layer = imageView.layer;
    layer.masksToBounds = YES;
    layer.cornerRadius = 10.0f;
} failure:NULL];
于 2013-04-14T21:18:20.893 回答
2

我从未使用过 AFNetworking,但我看到有一个版本的setImageWithURL方法需要一个“成功”块。尝试使用该版本并在“成功”块中更新图像视图的图层。

于 2013-04-14T20:03:44.097 回答
0

可在https://github.com/rs/SDWebImage获得的 SDWebImage 库包括以下方法:

  • (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock;

以下代码是我正在处理的一个项目的示例实现,带有一个相当大的圆角。我在同一个项目中同时使用了 AFNetworking 和 SDWebImage。

    __weak UIImageView * theImageView = self.imageView;

    [self.imageView setImageWithURL:[NSURL URLWithString:user.imgurl] placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
        // I only attempt to apply this if an image has been returned.
        if (image) {
            theImageView.image = image;
            CALayer * layer = theImageView.layer;
            layer.masksToBounds = YES;
            layer.cornerRadius = 20.0f;
        }

    }];
于 2013-12-20T15:55:45.397 回答