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. 利用Maven管理工程项目本地启动报错及解决方案

    目前利用Maven工具来构建自己的项目已比较常见.今天主要不是介绍Maven工具,而是当你本地启动这样的服务时,如果遇到报错,该如何解决?下面只是参考的解决方案,具体的解法还是得看log的信息. 1. ...

  2. Arduino小车学习与研究博客

    Arduino小车学习与研究博客 信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(201352 ...

  3. 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    实验报告链接:http://www.cnblogs.com/lx20145332/p/6058790.html

  4. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中

    第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...

  5. Opencv Linux环境搭建(2)

    继上次ubuntu10.04搭建失败之后,这次又换了一个系统. 拿出之前闲置的笔记本,安装了ubuntu12.04,按照这里的教程开始搞起来: http://www.linuxidc.com/Linu ...

  6. Android空闲教室查询-资料

    这是去年某课程的一个称作“研究型学习”的东西的报告的展示PPT,有点失败的是这个APP的名字起得不太好……PPT上的功能都实现了,其他功能都没有.一年了,程序都忘差不多了,也暂时没有时间分享.就先把P ...

  7. mysql慢查询分析工作pt-query-digest的使用

    一.简单安装 wget percona.com/get/pt-query-digest chmoe u+x pt-query-digest 二.简单使用 ./pt-query-digest /var/ ...

  8. Linq表达式开窍

    static IQueryable<T> GetPageList<T,TKey>(Expression<Func<T,bool>> whereLambd ...

  9. DVR分布式路由

    1. 背景 没有使用DVR的场景: 从图中可以明显看到东西向和南北向的流量会集中到网络节点,这会使网络节点成为瓶颈. 如果启用DVR,如下图: 对于东西向的流量, 流量会直接在计算节点之间传递. 对于 ...

  10. jQuery1.4源码解读

    来吧, 慢慢折腾吧 总结一下: jq1.4挺简单的, 正则写的不多, 看的都懂, 多写一些 三目写法到底要不要 特殊的地方的注释一定要有 /*! * jQuery JavaScript Library ...