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. [CareerCup] 14.3 Final Finally Finalize 关键字比较

    14.3 What is the difference between final, finally, and finalize? 这道题考察我们Java中的三个看起来很相似的关键字final,fin ...

  2. 动画:UIKitAnimation 简单动画学习 iOS (一) 渐变 、 移动 、翻页、来回翻转 ——转载

    转载请说明(谢谢) http://blog.csdn.net/a21064346/article/details/7851695 点击打开链接 以下 一个系列的 动画效果 在 UIView.h文件中可 ...

  3. 测试技能积木-AWK的简要用法

    做测试工作,经常要分析日志,有的时候活儿还很脏很累,比如抽取符合某些pattern的行,重新格式化等等.有的时候,我们需要也创造一些测试用数据文件.基于上述两种原因,在Unix Like 系统上,一些 ...

  4. Ajax基础之封装3

    今天接着我们上篇博文的栗子,现在我来扩大一下需求,之前是点击按钮取出新闻,现在要实现每隔一段事件进行新闻的更新.这个时候,肯定是加一个定时器,然后每隔一段事件,再进行一次Ajax请求,既然要经常用到A ...

  5. mui slider 改变默认index

    mui('class').slider().gotoItem(1,0) 目前已知问题,在class类名对应的dom元素是隐藏的时候初始化设置将报错,因为:  如果display取值是none,也就是不 ...

  6. 小白学习mysql之索引初步

    导语 索引在数据库中的地位是及其的重要,同时要想完全的掌握索引并不是一件容易的事,需要对数据的查询原理以及计算机操作系统有深刻的认识,当然相关的算法和数据结构也是必须的.因此,这篇文章感到了一些压力, ...

  7. tmux列表重命名

    查看tmux会话列表时,会话名称是数值递增,不易识别 tmux ls 1: 1 windows (created Fri Oct 21 16:29:46 2016) [175x41]2: 1 wind ...

  8. C#基础知识系列四(运算符汇总)

    前言  本节主要来讲C#中的各种运算符.主要包括is运算符.as运算符.checked和unchecked运算符.sizeof运算符.空接合运算符(??).&和&&.移位运算符 ...

  9. groovyConsole — the Groovy Swing console

    1. Groovy : Groovy Console The Groovy Swing Console allows a user to enter and run Groovy scripts. T ...

  10. Daily Scrum – 1/12

    Meeting Minutes Merge Wordlist & Word Recite entry. (P0) – Done. Remove "Word Challenge&quo ...