关于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;
目录
相关文章
|
Web App开发 JavaScript iOS开发
Xcode9用Safari调试模拟器JS代码显示“无可检查的应用程序”的原因
Xcode9用Safari调试模拟器JS代码显示“无可检查的应用程序”的原因
1273 0
|
人工智能 自然语言处理 文字识别
秒懂全文:盘点13个各具特色的AI智能阅读助手工具
在当今信息爆炸的时代,AI阅读工具正在革新我们的阅读方式,成为了提高效率、优化阅读体验的关键。这类AI阅读辅助工具,只需要上传文件或者输入链接,便可以直接以聊天对话的形式进行一键总结和智能问答,满足用户AI PDF 阅读、AI文档问答分析、AI音视频总结等多种实用需求,高效提炼信息要点精华,建立属于自己的AI知识管理和信息管理工作流。对此,根据阅读场景,精选了 13 个具有代表性、各具特点的高质量 AI 阅读助手助理。 具体如何选择,见文末总结。
1411 1
秒懂全文:盘点13个各具特色的AI智能阅读助手工具
|
Android开发 iOS开发
WebView加载https的空白及图片加载不了的问题
WebView加载https的空白及图片加载不了的问题
574 0
|
iOS开发 MacOS Windows
Mac 去除自动生成.DS_Store文件
Mac 去除自动生成.DS_Store文件
748 0
|
存储 弹性计算 NoSQL
阿里云Ubuntu20.04安装MongDB
本文主要演示如何使用阿里云Ubuntu20.04,并使用阿里云DMS工具登录MongDB。
507 0
阿里云Ubuntu20.04安装MongDB
|
XML 存储 JSON
使用 Plist 编辑器——简单入门指南
本指南将介绍如何使用 Plist 编辑器。您将学习如何打开、编辑和保存 plist 文件,并了解 plist 文件的基本结构和用途。跟随这个简单的入门指南,您将掌握如何使用 Plist 编辑器轻松管理您的 plist 文件。
|
传感器 人工智能 自动驾驶
蜀道集团发布国内首个车路协同高精度导航,阿里云提供技术支持
2月24日,蜀道集团联合阿里云、高德、四川数字交通科技股份有限公司发布蜀道·高德行业版APP,这是国内首个将智慧高速车路协同技术与车机导航融合的应用,目前用户可在157公里的成宜高速体验,未来将向全国公路推广。
蜀道集团发布国内首个车路协同高精度导航,阿里云提供技术支持
|
移动开发 监控 数据可视化
智慧工地源码,PC端(监管平台、项目管理平台)、H5移动端、数据大屏端
提供对各个建筑工地、工程项目、承建机构等信息的维护、配置和管理。分类别展示了工地名称、施工单位、负责人、工地位置、开工时间、联系方式、工地出入口和数据状态等信息,通过搜索栏可直接查询各个工地数据或者某个时间段内处于开工状态的工地信息。 2、人员管理 农民工实名制管理系统可以实时记录农民工进出工地、考勤、工资支付等信息,人员履历、资料、资质证件管理,培训、合同、工种等信息管理,实时统计在场人员各项数据。
455 0
|
关系型数据库 MySQL Apache
基于Anolis OS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Anolis OS、Apache、MySQL和PHP。