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

最终效果:

新浪微博客户端(32)-设置相册图片的contentMode的更多相关文章

  1. 新浪微博客户端(31)-显示相册图片上的GIF标记

    DJStatusPhotoView.h #import <UIKit/UIKit.h> @class DJPhoto; @interface DJStatusPhotoView : UII ...

  2. Android应用--新浪微博客户端新特性滚动视图和启动界面实现

    新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...

  3. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  4. android开发新浪微博客户端 完整攻略 [新手必读]

    开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...

  5. android 新浪微博客户端的表情功能的实现

    这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...

  6. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码

    接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...

  7. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  8. Android 仿微信朋友圈发动态功能(相册图片多选)

    代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-15276 ...

  9. 基于H5+ API手机相册图片压缩上传

    // 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...

随机推荐

  1. Java中sleep()和wait()的区别

    1. 这两个方法来自不同的类,sleep方法属于Thread,wait方法属于Object. 2. 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法. ...

  2. [CareerCup] 14.2 Try-catch-finally Java中的异常处理

    14.2 In Java, does the finally block get executed if we insert a return statement inside the try blo ...

  3. 面试官的七种武器:Java篇

    起源 自己经历过的面试也不少了,互联网的.外企的,都有.总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的.细细想来,面试官拥有以下七种武器.恰似古龙先生笔下的武侠世界 ...

  4. NuGet更新引用Dll

    第一种 通过 "Add Library Package Reference..." 添加 点击 ‘Add Library Package Reference...’ , 搜索你要添 ...

  5. Struts2:java.lang.NoSuchFieldException: resourceEntries at java.lang.Class.getDeclaredField(Class.java:1901)

    今天在做Struts2的测试用例时候,程序能正常跳转,但是在Console却报了一个错误,如下: java.lang.NoSuchFieldException: resourceEntries at ...

  6. easyui中tree控件添加自定义图标icon

    来源于:http://blog.163.com/lintianhuanhai@126/blog/static/165587366201421704420256/ <!DOCTYPE html&g ...

  7. Microsoft Office下载地址

    文件名: cn_office_professional_plus_2016_x86_x64_dvd_6969182.iso 语言: Chinese – Simplified 文件大小:2.41 GB ...

  8. Linux大文件已删除,但df查看已使用的空间并未减少解决

    在我的生活当中遇到磁盘快满了,这时候准备去删除一些大文件 于是我使用ncdu 查看了一下当前系统占用资源比较多的是那些文件,结果一看是elasticsearch的日志文件,好吧,竟然找到源头了,那就把 ...

  9. ORACLE建表练习

    1,学生表 -- Create table create table T_HQ_XS ( xueh ) not null, xingm ) not null, xingb ) ', nianl NUM ...

  10. Windows下一些配置信息

    VC.VS和.NetFramework版本对应关系 VC6.0对应VS 6.0 VC7.0对应VS 2002 VC7.1对应VS 2003 .Net Framework1.0/1.1 VC8.0对应V ...