• 新浪微博客户端(32)-设置相册图片的contentMode


    DJStatusPhotoView.m

    #import "DJStatusPhotoView.h"
    #import "UIImageView+WebCache.h"
    #import "DJPhoto.h"
    
    
    
    @interface DJStatusPhotoView()
    
    // GIF标记
    @property (nonatomic,weak) UIImageView *gifView;
    
    @end
    
    
    @implementation DJStatusPhotoView
    
    
    
    - (instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            
            
    //        typedef NS_ENUM(NSInteger, UIViewContentMode) {
    //            UIViewContentModeScaleToFill,             // 默认值,拉伸并填充到整个ImageView,可能变形
    //            UIViewContentModeScaleAspectFit,          // 拉伸至完全显示在imageView里面,不会变形
    //            UIViewContentModeScaleAspectFill,         // 【推荐使用!!!】拉伸至图片的宽度等于imageView的宽度或高度为止
    //            UIViewContentModeRedraw,                  // 不常用,当调用setNeedsDisplay的时候,会重绘图片
    //            UIViewContentModeCenter,                  // 居中显示,不会拉伸
    //            UIViewContentModeTop,
    //            UIViewContentModeBottom,
    //            UIViewContentModeLeft,
    //            UIViewContentModeRight,
    //            UIViewContentModeTopLeft,
    //            UIViewContentModeTopRight,
    //            UIViewContentModeBottomLeft,
    //            UIViewContentModeBottomRight,
    //        };
    //        
    //        
    //        // self.clipsToBounds 超出边框的部分会剪掉,通常与AspectFill配合使用
    //        
    //        // 规律:
    //        // 1. 凡是带有scale单词的,图片都会拉伸
    //        // 2. 凡是带有Aspect单词的,图片都会保持原来的宽高比,图片不会变形
    
            
            self.contentMode = UIViewContentModeScaleAspectFill;
            self.clipsToBounds = YES;
        }
        return self;
    }
    
    
    
    
    - (UIImageView *)gifView {
    
    
        if (!_gifView) {
            UIImage *gifImage = [UIImage imageNamed:@"timeline_image_gif"];
            UIImageView *gifView = [[UIImageView alloc] initWithImage:gifImage];
            [self addSubview:gifView];
            _gifView = gifView;
        }
        return _gifView;
    }
    
    
    
    
    - (void)setPhoto:(DJPhoto *)photo {
    
        _photo = photo;
    
        // 取得缩略图对应的中型图片
        NSString *photo_image_url = photo.thumbnail_pic;
        photo_image_url = [photo_image_url stringByReplacingOccurrencesOfString:@"thumbnail" withString:@"bmiddle"];
    
        // 设置显示图片
        [self sd_setImageWithURL:[NSURL URLWithString:photo_image_url] placeholderImage:[UIImage imageNamed:@"timeline_image_placeholder"]];
        
        // 根据图片类型判断是否显示GIF标记(注意cell会重复利用)
        self.gifView.hidden = ![photo.thumbnail_pic.lowercaseString hasSuffix:@"gif"];
        
        DJLog(@"%@",photo.thumbnail_pic);
        
        
    }
    
    
    // 调整gifView的位置(由于使用的是initWithImage创建,所以gifView有宽和高,因此只需要设置x,y值即可)
    - (void)layoutSubviews {
    
        [super layoutSubviews];
        self.gifView.x = self.width - self.gifView.width;
        self.gifView.y = self.height - self.gifView.height;
        
    }
    
    
    
    
    @end

    最终效果:

     

  • 相关阅读:
    这些简单优化能让你的Win10流畅很多
    win7系统登录界面背景怎么修改?
    如何在win7下通过easyBCD引导安装Ubuntu14.04
    为什么我的电脑打不开便签?
    打开Word为什么会出现感叹号呢???
    图像变换原理
    运行
    php、前端开发(网站建设)环境搭建
    zend studio面板功能
    zend studio汉化
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6094987.html
Copyright © 2020-2023  润新知