Подтвердить что ты не робот

SetBackgroundimage в UIButton с помощью SDWebimage

Я хочу установить фоновое изображение UIButton с помощью SDWebImage.

Код: -

[btn.imageView setImageWithURL:[NSURL URLWithString:@"image url here"]
                           placeholderImage:[UIImage imageNamed:@"placeholder"]];

Спасибо

4b9b3361

Ответ 1

В SDWebImage есть метод: SDWebImage/SDWebImage/UIButton + WebCache.h

Импортируйте этот файл в свой класс:

#import <SDWebImage/UIButton+WebCache.h>

Используйте любой из этих методов:

- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state;
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder;
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletionBlock)completedBlock;
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;
- (void)sd_setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock;

Ответ 2

Вы можете напрямую установить изображение в UIButton с помощью SDWebImage

#import <SDWebImage/UIButton+WebCache.h>

 [btnProfilePic sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"IMAGE_URL_HERE"]]] forState:UIControlStateNormal];

Или используя блок

[btnProfilePic sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"IMAGE_URL_HERE"]]] forState:UIControlStateNormal placeholderImage:UIImage imageNamed:@"placeholderImage.png"] completed:
    ^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

    }];

Ответ 3

Я полностью согласен с @CRDave, но если вам нужно использовать методы UIImageView для чего-то вроде setImageWithPreviousCachedImageWithURL (который, поскольку запись не является частью категории UIButton), не устанавливайте фон кнопки в завершении в противном случае ваш заполнитель или прогрессивная загрузка не будут работать. Скорее установите его так:

    UIImageView *temp = [[UIImageView alloc] init];
    [temp sd_setImageWithPreviousCachedImageWithURL:[NSURL URLWithString:stringUrl] andPlaceholderImage:[UIImage imageNamed:@"loading.png"] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
        //Nothing.
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        //Nothing.
    }];
    [btnTheButton setBackgroundImage:temp.image forState:UIControlStateNormal];

Ответ 4

UIImageView *imageViewb;
[imageViewb setImageWithURL:[NSURL URLWithString:@"image url here"]
                               placeholderImage:[UIImage imageNamed:@"placeholder"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                [button setImage: imageViewb.image forState:UIControlStateNormal];       
            }];

Ответ 5

если #import <SDWebImage/UIButton+WebCache.h> не найдено, тогда я думаю, что вам нужно использовать #import "UIButton + WebCache.h" вместо #import <SDWebImage/UIButton+WebCache.h>

Это сработает отлично для меня

Ответ 6

Я ответил на это здесь, но для удобства я публикую ответ: fooobar.com/info/17832316/...

cell.bProfileImage.sd_setBackgroundImage(with: URL(string:
individualChatsListArray[indexPath.row].profile_image), for:
UIControl.State.normal, placeholderImage: UIImage(named:
"default_profile"), options: SDWebImageOptions(rawValue: 0)) { (image,
error, cache, url) in

}