用SDWebImage漸層載入圖片,

來源:互聯網
上載者:User

用SDWebImage漸層載入圖片,

用SDWebImage漸層載入圖片

 

使用

使用請詳細查看源碼,只需要給定一個圖片地址以及一個placeHolder圖片(非必須)即可。

 

效果

 

源碼

https://github.com/YouXianMing/UI-Component-Collection 中的 SDWebImageViewPlaceHorder

////  PlaceholderImageView.h//  SDWebImageViewPlaceHorder////  Created by YouXianMing on 16/8/19.//  Copyright  2016年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>@interface PlaceholderImageView : UIView/** *  Picture's url string. */@property (nonatomic, strong) NSString *urlString;/** *  The placeholder's image. */@property (nonatomic, strong) UIImage  *placeholderImage;/** *  Default is UIViewContentModeScaleAspectFill. */@property (nonatomic) UIViewContentMode placeholderImageContentMode;/** *  Default is UIViewContentModeScaleAspectFill. */@property (nonatomic) UIViewContentMode contentImageContentMode;/** PlaceholderImageView's constractor. @param frame The Frame. @param image The placeholderImage. @return The PlaceholderImageView's instancetype. */+ (instancetype)placeholderImageViewWithFrame:(CGRect)frame placeholderImage:(UIImage *)image;@end
////  PlaceholderImageView.m//  SDWebImageViewPlaceHorder////  Created by YouXianMing on 16/8/19.//  Copyright  2016年 YouXianMing. All rights reserved.//#import "PlaceholderImageView.h"#import "UIImageView+WebCache.h"@interface PlaceholderImageView ()@property (nonatomic, strong) UIImageView *placeHoderImageView;@property (nonatomic, strong) UIImageView *contentImageView;@property (nonatomic, strong) NSString    *pUrlString;@end@implementation PlaceholderImageView- (void)layoutSubviews {        [super layoutSubviews];    self.placeHoderImageView.frame = self.bounds;    self.contentImageView.frame    = self.bounds;}- (instancetype)initWithFrame:(CGRect)frame {        if (self = [super initWithFrame:frame]) {                self.layer.masksToBounds = YES;                self.placeHoderImageView = [[UIImageView alloc] initWithFrame:self.bounds];        self.contentImageView    = [[UIImageView alloc] initWithFrame:self.bounds];                [self addSubview:self.placeHoderImageView];        [self addSubview:self.contentImageView];                self.contentImageContentMode     = UIViewContentModeScaleAspectFill;        self.placeholderImageContentMode = UIViewContentModeScaleAspectFill;    }        return self;}+ (instancetype)placeholderImageViewWithFrame:(CGRect)frame placeholderImage:(UIImage *)image {    PlaceholderImageView *placeHolderImageView = [[PlaceholderImageView alloc] initWithFrame:frame];    placeHolderImageView.placeholderImage      = image;        return placeHolderImageView;}#pragma mark - Setter & Getter.- (void)setPlaceholderImage:(UIImage *)placeholderImage {        _placeHoderImageView.image = placeholderImage;}- (UIImage *)placeholderImage {        return _placeHoderImageView.image;}- (void)setUrlString:(NSString *)urlString {        _pUrlString             = urlString;    _contentImageView.alpha = 0.f;        NSURL *url = [NSURL URLWithString:urlString];    [_contentImageView sd_setImageWithURL:url completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {               if (image) {                        // Image load from disk or download from network.            if (cacheType == SDImageCacheTypeNone || cacheType == SDImageCacheTypeDisk) {                                [UIView animateWithDuration:0.5f animations:^{                                        _contentImageView.alpha = 1.f;                }];                            } else {                            _contentImageView.alpha = 1.f;            }        }    }];}- (NSString *)urlString {    return _pUrlString;}- (void)setPlaceholderImageContentMode:(UIViewContentMode)placeholderImageContentMode {    _placeHoderImageView.contentMode = placeholderImageContentMode;}- (UIViewContentMode)placeholderImageContentMode {    return _placeHoderImageView.contentMode;}- (void)setContentImageContentMode:(UIViewContentMode)contentImageContentMode {    _contentImageView.contentMode = contentImageContentMode;}- (UIViewContentMode)contentImageContentMode {    return _contentImageView.contentMode;}@end

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.