iOS图片AVMakeRectWithAspectRatioInsideRect妙用
来源:互联网 发布:低头族数据统计 编辑:程序博客网 时间:2024/06/06 03:02
from:http://www.jianshu.com/p/827090aa933b?utm_campaign=maleskine&utm_content=note&utm_medium=writer_share&utm_source=weibo
在 iOS 中我们经常会碰到一些 imagView 的 UIContentMode的显示方式,最初我怎么记也搞不太清楚,后来我看到了这幅图,我发现我遇到了指明灯了,一图解千惑,这里分享给大家。(ps:大家别说我菜啊)
1.神器计算图片位置的函数:AVMakeRectWithAspectRatioInsideRect()
是根据image的比例进行居中显示, 如果没用这个函数, 要自己计算一下, 之前也做过这方面的需求, 我是调整imageView的frame来解决的, 粘上代码:
<span style="font-size:14px;"> if(imgWidth/imgHeight < screenWidth/screenHeight){ //按宽度算 CGFloat newWidth = imgWidth/imgHeight*screenHeight; self.showImageView.frame = CGRectMake((screenWidth-newWidth)/2, 0, newWidth, screenHeight); } else { //按高度算 CGFloat newHeight = imgHeight/imgWidth*screenWidth; self.showImageView.frame = CGRectMake(0, (screenHeight-newHeight)/2, screenWidth, newHeight); }</span>
还是下面的方法比较easy, 轻松搞定, 膜拜一下, mark之 !
通过这个函数,我们可以计算一个图片放在另一个 view 按照一定的比例居中显示,可能说的我比较抽象,还是用图来显示,可以说它可以直接一个 image 以任何的比例显示显示在 imageview 中居中所处的位置,拿 UIViewContontAspectFit来演示,
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];imageView.center = self.view.center;imageView.backgroundColor = [UIColor redColor];imageView.contentMode = UIViewContentModeScaleAspectFit;UIImage *image = [UIImage imageNamed:@"mm.jpg"];imageView.image = image; CGRect iamgeAspectRect = AVMakeRectWithAspectRatioInsideRect(image.size, imageView.bounds);NSLog(@"iamgeAspectRect = %@, imageView =%@",NSStringFromCGRect(iamgeAspectRect),NSStringFromCGRect(imageView.frame));[self.view addSubview:imageView];
图片显示如下:(ps:这妹子是我公司一个管理 公司weibo账号 的妹纸,目前我在勾搭,你们不要羡慕,生活依然很美好的嘛!)
log 打因结果如下:iamgeAspectRect = {{37.563884156729145, 0}, {224.87223168654171, 300}}, imageView ={{37.5, 183.5}, {300, 300}}
可以从 log 得出 对应的 image 以 aspectFit 的方式在 imageView 的位置,在 imageView 中的位置是(37.5,0)。这样你根本不需要任何多的代码来计算了。(ps:这个函数是在 AV框架的,童鞋们自行导入。)
具体它的其他的好处,如果你是做相机或者图片处理的你就知道它的好处了,什么处理横屏照片了,16:9,1:1,4:3图片在控件中的位置,控件上的点对应图片上的点的位置拉,等等。
- iOS图片AVMakeRectWithAspectRatioInsideRect妙用
- ios 代码块的妙用
- 妙用CSS滤镜为图片加上特殊效果
- IOS开发UIColor之RGB妙用
- IOS开发之延迟执行---妙用篇
- iOS 中 CAtextLayer 类的妙用 -
- iOS里面xib和AutoLayout的妙用
- iOS block技巧妙用及工作原理
- iOS经典讲解之妙用UITextView
- iOS 图片
- IHttpHandler的妙用(1):给图片添加水印
- IHttpHandler的妙用(1):给图片添加水印
- IHttpHandler的妙用(1):给图片添加水印
- 一张图片的妙用(相当实用哦)
- IHttpHandler的妙用(1):给图片添加水印
- scrollLeft() 妙用 鼠标移动 反方向图片滚动
- Android中妙用Selector实现颜色图片切换效果
- “懒”的妙用——浅析图片懒加载技术
- 自定义eclipse一行显示字符串的数目
- MS Server, MySql,Oracle数据库的区别
- C# 文件正由另一进程使用,该进程无法访问该文件
- eclipse设置字体大小
- yum安装mongodb
- iOS图片AVMakeRectWithAspectRatioInsideRect妙用
- 程序员职业生涯的11个阶段程序人生
- 函数指针与实参推断
- Last_Errno: 1062,Last_Error: Error 'Duplicate entry '...' for key 'PRIMARY'' on query. 的详细分析过程
- UVA 12304 2D Geometry 110 in 1!(计算几何)
- 第8周项目1-程序阅读——运算符重载
- postgreSQL添加多边形
- 模仿qq列表的ActiveX控件
- 第三次作业:《国际贸易学》—保护贸易理论