关于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;

关于UIImageView的显示问题相关推荐

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

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

  2. 如何在UIimageview里显示一张图片里的某一部分

    首先,获取想要显示的部分的大小及位置 CGRect rect: 然后,将此部分从图片中剪切出来 CGImageRef imageRef=CGImageCreateWithImageInRect([im ...

  3. iOS swift UITableView的cell被点击或是用代码选中其中的UIImageView会显示Highlighted效果

    文章目录 1.展示 2.cell的代码选中不能用cell.isSelected,而要用tableView.selectRow( 1.展示 2.cell的代码选中不能用cell.isSelected,而 ...

  4. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  5. 【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725 一. 分段控件 (UISegmentedControl) 控件展 ...

  6. ios html gif 显示,显示gif时出现巨大的内存使用Swift iOS

    我正在制作一个应用程序,它在UIImageView中显示gif,并从parse中加载gif.我偶然发现的问题是每当我加载一个Gif时,它会使用大约20 MB的内存,并且当我执行一个segue时,这个内 ...

  7. IOS开发学习笔记024-UIButton和UIImageView的区别

    一.UIButton和UIImageView的区别 1. UIImageView 默认只能显示一张图片(默认会填充整个ImageView) 设置方法:image/setImage: UIButton ...

  8. UIButton、UIImageView、UILabel的选择

    UIButton 特点 既能显示文字,又能显示图片(能显示2张图片,背景图片.内容图片) 长按高亮的时候可以切换图片\文字 直接通过addTarget...方法监听点击 UIImageView 能显示 ...

  9. 机试题:地图定位、拍照并显示、录制视频并播放

    这两天参加面试,有个公司先出了机试题,然后才能进入下一步,机试题大意是要求实现:地图定位.拍照并显示照片.录制视频并且播放视频三个小功能. 先上我的效果图: 1.地图定位关键代码(ios8后,开启地图 ...

最新文章

  1. 2nd 四人小组项目的进一步分析
  2. 循环获取结构体中的健名与值的实现
  3. compass reset和layout [Sass和compass学习笔记]
  4. bizmsg是什么文件可以删除吗_C盘里的文件夹都是什么?可以删除吗?哪些可以删除?...
  5. 2018.11.09 codeforces487E. Tourists(tarjan+树链剖分)
  6. 网络营销常用工具与资源
  7. STM32F4+Wi-Fi+EDP 向 OneNet 上传数据
  8. PHP中插件机制的一种实现方案
  9. C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp
  10. HTTP与HTTPS协议
  11. java bio例子_传统的BIO
  12. 开源渗透测试工具合集
  13. Matlab计算器设计
  14. 计算机硬件未来发展前景,计算机硬件的未来发展趋势
  15. 分布式之线上监控工具CAT
  16. java移动拼图游戏模拟
  17. 用python打开桌面应用程序
  18. 总结iOS游戏的设计、营销和盈利方式
  19. 三星 android 4.4 kitkat 刷机包,三星 Galaxy S III LTE(i9305) 刷机包 CM11 KitKat 安卓Android4.4 非官方版...
  20. mac u盘linux 双系统安装教程,U盘安装MAC双系统完美方案实现在MAC系统下使用双系统...

热门文章

  1. 一本计划中的WPF图书目录
  2. Java8 Math新增方法
  3. 如何写出吸引HR的软件测试简历
  4. html 进度条roll,js实现增加数字显示的环形进度条效果
  5. python开发聊天机器人_Python实现机器人聊天
  6. 回归模型分类(自回归AR模型、向量自回归VAR模型等)
  7. 2020 前端学习路线总结,哎呦,不错哦!
  8. 初级前端如何突破瓶颈
  9. I - 免费馅饼-图画详细解析
  10. java 数组排序_用Java对数组排序