新浪微博客户端(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
最终效果:
新浪微博客户端(32)-设置相册图片的contentMode的更多相关文章
- 新浪微博客户端(31)-显示相册图片上的GIF标记
DJStatusPhotoView.h #import <UIKit/UIKit.h> @class DJPhoto; @interface DJStatusPhotoView : UII ...
- Android应用--新浪微博客户端新特性滚动视图和启动界面实现
新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- android开发新浪微博客户端 完整攻略 [新手必读]
开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...
- android 新浪微博客户端的表情功能的实现
这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...
- 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- Android 仿微信朋友圈发动态功能(相册图片多选)
代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-15276 ...
- 基于H5+ API手机相册图片压缩上传
// 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...
随机推荐
- Qt——树的搜索
一.Qt中的树 Qt中树的实现有两种方式.第一种是使用Qt提供的QTreeWidget,很多函数都封装好,比较方便:另一种是通过QTreeView实现,设置它的数据模型,比如使用QStandardIt ...
- gunzip 和 unzip 解压文件到指定的目录
Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzi ...
- dxut.h(29): fatal error C1083: Cannot open include file: 'dxsdkver.h': No such file or directory
从网上download一个三维演示模型的软件编译发现报找不到dxsdkver.h文件,网上查阅这是MS的DirectX sdk中的库文件,于是先download DirectX SDK 安装之后,配置 ...
- [CareerCup] 12.4 Test a Webpage 测试一个网页
12.4 How would you load test a webpage without using any test tools? 这道题问我们如何不用任何测试工具来加载测试一个网页.加载测试可 ...
- LeetCode Question Difficulty Distribution
参考链接:https://docs.google.com/spreadsheet/pub?key=0Aqt--%20wSNYfuxdGxQWVFsOGdVVWxQRlNUVXZTdEpOeEE& ...
- LeetCode:Word Break(DP)
题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...
- 八款Android 开发者必备的小工具
Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达 ...
- angularJS中-$route路由-$http(ajax)的使用
后台请求使用的是nodeJS驱动(后面帖代码),很简单的RESTFUL, 页面使用的是bottstarp3.0(懒人神器); 第一个例子: 在本地架设NODEJS, angular的所有请求都是请求本 ...
- [转]不再以讹传讹,GET和POST的真正区别
原文地址:http://www.nowamagic.net/librarys/veda/detail/1919 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个 ...