关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示

我们都知道在ios中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域。

通过查看UIView的属性可以知道,view的contentMode属性可以用来控制图片的显示情况。下面的设置可以让图片进行居中显示。

1 imageView.contentMode =  UIViewContentModeCenter;

这个居中是包括了,横向和纵向都是居中。图片不会拉伸或者压缩,就是按照imageView的frame和图片的大小来居中显示的。

这里有两种情况:

1、图片比view的区域更大。这个时候会截取图片的中间部位显示在frame区域里面。

2、图片比view的区域更小。这个时候图片会完整的显示在frame的中间位置。

如果在默认情况,图片的多出来的部分还是会显示屏幕上。如果不希望超过frame的区域显示在屏幕上要设置。clipsToBounds属性。

1 imageView.clipsToBounds  = YES;

最后一个问题,在iphone的retina屏幕上面,必须要设置,contentScaleFactor属性。这个属性的默认值是1。二对应的retina屏幕需要是2.可以通过下面的方式来设置:

1 [imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];

但是用:

1 imageView.contentMode =  UIViewContentModeCenter;

也有他的问题,就是在图片不规则的时候,而且图片的宽或者高比frame的宽高更小的时候,会出现空白的情况。

为了解决这种问题可以设置:

1 imageView.contentMode =  UIViewContentModeScaleAspectFill;

这样图片会拉伸或者压缩以适应frame的边界,而且是适应更小的边,这样可以达成的效果是,图片适应最小的边铺开显示,更大的边会超出frame,如果设置了clipsToBounds属性为YES,那么更大的边就会被截断。这样达成更好的居中显示效果,完整的代码如下:

1 UIImage *pic = [ UIImage imageNamed:@"IMG_0404.PNG"];
2 UIImageView *imageView   = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 240, 100 )];
3 [imageView setImage:pic];
4 [imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];
5 imageView.contentMode =  UIViewContentModeScaleAspectFill;
6 imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
7 imageView.clipsToBounds  = YES;

原文链接地址:http://www.ganlvji.com/?p=139

时间: 2024-10-01 04:47:37

关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示的相关文章

word里面粘贴图片,怎么显示的不全?

分析处理     出现此故障的原因有可能是设置为固定值的文档行距小于图形的高度,从而导致插入的图形只显示出了一部分.可以采用如下的方法解决:  一. 首先,选定该图形,单击[开始]tab页中的[段落]项的右方的箭头,打开[段落]对话框.  二. 在[段落]对话框中,单击[缩进和间距]选项卡,在[行距]框中选择[单倍行距],如果在[行距]框中选择了[固定值],就需要注意将[设置值]框中的数值改为合适的高度值  三. 单击[确定]按钮.       四.也可以全部选择文档,把那个[段落]中的[行距]

Tomcat停,图片名字中文显示不出来

Tomcat停,图片名字中文显示不出来 Tomcat下,图片名字中文显示不出来在tomcat的server.xml中加入URIEncoding="utf-8"<Connector port="8080" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"/>

iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)

iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变形,显示正常 3.图片的宽度或高度大于其父视图的类的宽的或高度,如果是宽度的问题, 就以其父视图的宽度为准,确定图片的显示宽度:如果是高度的问题,就以 其父视图的高度为准,确定图片的显示高度. 以上三种情况,具体示例依次如下: 第一种情况,调用方法: - (void)imageLoadedFinis

Github Markdown 图片如何并排显示

Github Markdown 图片如何并排显示 要一张图片接着一张图片的写,中间不能有换行.如果换行的话则图片也换行 正确的写法: ![描述](图片链接)![描述](图片链接)![描述](图片链接) 1 实例:  错误的写法:换行 ![描述](图片链接) ![描述](图片链接) ![描述](图片链接) 1 2 3 实例:    居中并排: 正确写法:注意两个<img>之间不要换行,如果图片太大的的话可以设置图片的宽度或者高度,这样图片就会缩放.注意不要同时设置宽度和高度,这样的话不好把握宽度

thinkphp内置截取字符串函数无法显示省略号解决方法

thinkphp内置截取字符串函数无法显示省略号解决方法 functions.php function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ if(function_exists("mb_substr")) {      if($suffix)    {         if($str==mb_substr($str, $start, $length, $charset))

多区域显示(5)-粘贴为图片链接

多区域显示(5)-粘贴为图片链接 设计要点:页面设计.多窗口.拆分窗口 阿金:其实,俺还有一个想法,就是"粘贴为图片链接" 秀秀:嗯--每个区域做一个链接? 阿金:对呀,各个图片的数据来自不同区域,甚至不同工作簿都行! 秀秀:源数据变化,它也能跟着变? 阿金:对,图片还可以美化,可以显示成三维图片呢. 秀秀:噢,是挺漂亮的. 阿金:关键是比你的"多窗口"漂亮多了! 秀秀:且!总抓"多窗口"的小辫子! 多区域显示(5)-粘贴为图片链接,布布扣,bu

C# 如何定义让PropertyGrid控件显示[...]按钮,并且点击后以下拉框形式显示自定义控件编辑属性值

关于PropertyGrid控件的详细用法请参考文献: 1.C# PropertyGrid控件应用心得 2.C#自定义PropertyGrid属性 首先定义一个要在下拉框显示的控件: using System; using System.Windows.Forms; namespace Simon.WinForms.Examples.PropertyGrid { public class EditorControl : UserControl { public EditorControl() {

利用 :before 特性实现图片按比例显示

好吧,想不到自称布局小沙弥的我会被图片按比例显示给尴尬到. 设计师跟我说,这里的图要按 750x330 的,好吧,但这图是屏宽呀,屏幕宽度会变化的,那高度也会不定咯, 要么裁图片(工作量大),要么给定高(图片会比例不对,或者用 background 显示不全),来体会一下... 当宽度变化时,立马就呵呵了,一脸懵逼... 后来吧,在研究大量图片数据加载优化问题时,去调研了下淘宝天猫京东,然后一不小心发现了 :before 这种布局方式,先看一眼代码 .img { position: relati

iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示

一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页数修改 二.帖子中的日期显示问题(操作日期的两个类的使用) 期望达到的效果:如图 <1>NSDate -- 需要通过NSDateFormatter(日期格式类)将日期转换成相同的格式,才能相互运算,计算出来的时间间隔是以秒数来呈现的. <2>NSCalendar(日历类) -- 通过当