关于UIImageView的显示问题
关于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的显示问题相关推荐
- 关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示
我们都知道在ios中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域. 通过查看UI ...
- 如何在UIimageview里显示一张图片里的某一部分
首先,获取想要显示的部分的大小及位置 CGRect rect: 然后,将此部分从图片中剪切出来 CGImageRef imageRef=CGImageCreateWithImageInRect([im ...
- iOS swift UITableView的cell被点击或是用代码选中其中的UIImageView会显示Highlighted效果
文章目录 1.展示 2.cell的代码选中不能用cell.isSelected,而要用tableView.selectRow( 1.展示 2.cell的代码选中不能用cell.isSelected,而 ...
- 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片
[问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...
- 【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725 一. 分段控件 (UISegmentedControl) 控件展 ...
- ios html gif 显示,显示gif时出现巨大的内存使用Swift iOS
我正在制作一个应用程序,它在UIImageView中显示gif,并从parse中加载gif.我偶然发现的问题是每当我加载一个Gif时,它会使用大约20 MB的内存,并且当我执行一个segue时,这个内 ...
- IOS开发学习笔记024-UIButton和UIImageView的区别
一.UIButton和UIImageView的区别 1. UIImageView 默认只能显示一张图片(默认会填充整个ImageView) 设置方法:image/setImage: UIButton ...
- UIButton、UIImageView、UILabel的选择
UIButton 特点 既能显示文字,又能显示图片(能显示2张图片,背景图片.内容图片) 长按高亮的时候可以切换图片\文字 直接通过addTarget...方法监听点击 UIImageView 能显示 ...
- 机试题:地图定位、拍照并显示、录制视频并播放
这两天参加面试,有个公司先出了机试题,然后才能进入下一步,机试题大意是要求实现:地图定位.拍照并显示照片.录制视频并且播放视频三个小功能. 先上我的效果图: 1.地图定位关键代码(ios8后,开启地图 ...
最新文章
- 2nd 四人小组项目的进一步分析
- 循环获取结构体中的健名与值的实现
- compass reset和layout [Sass和compass学习笔记]
- bizmsg是什么文件可以删除吗_C盘里的文件夹都是什么?可以删除吗?哪些可以删除?...
- 2018.11.09 codeforces487E. Tourists(tarjan+树链剖分)
- 网络营销常用工具与资源
- STM32F4+Wi-Fi+EDP 向 OneNet 上传数据
- PHP中插件机制的一种实现方案
- C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp
- HTTP与HTTPS协议
- java bio例子_传统的BIO
- 开源渗透测试工具合集
- Matlab计算器设计
- 计算机硬件未来发展前景,计算机硬件的未来发展趋势
- 分布式之线上监控工具CAT
- java移动拼图游戏模拟
- 用python打开桌面应用程序
- 总结iOS游戏的设计、营销和盈利方式
- 三星 android 4.4 kitkat 刷机包,三星 Galaxy S III LTE(i9305) 刷机包 CM11 KitKat 安卓Android4.4 非官方版...
- mac u盘linux 双系统安装教程,U盘安装MAC双系统完美方案实现在MAC系统下使用双系统...