关于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;
目录
相关文章
|
图形学
Unity【XBox One】- 手柄输入的配置与使用
Unity【XBox One】- 手柄输入的配置与使用
1216 1
Unity【XBox One】- 手柄输入的配置与使用
|
4月前
|
JavaScript 前端开发 安全
前端组件库——Naive UI知识点大全(一)
教程来源 https://hllft.cn/category/artificial-intelligence.html Naive UI是Vue 3 + TypeScript现代化UI库,由图森未来开源。主打轻量、高性能、零CSS导入、全组件Tree Shaking及类型安全主题系统,已获GitHub 1.5w+ Star,适合追求开发体验与性能的中后台项目。
|
7月前
|
算法 安全 数据建模
阿里云SSL证书怎么样?2026年阿里云SSL证书介绍、收费标准、性能测评
阿里云SSL证书(数字证书管理服务)是依托国际/国内顶级CA机构(Certificate Authority,证书颁发机构)颁发的加密认证服务,核心定位为“保障网络通信安全、验证身份合法性的基础安全解决方案”,通过TLS/SSL加密协议对客户端与服务器之间的传输数据进行加密,防止数据被窃取、篡改,同时验证网站/服务器身份,避免钓鱼网站冒充风险。2026年,阿里云SSL证书全面升级为订阅服务模式,适配CA/B行业新规,优化证书类型覆盖与性能表现,同时推出针对性优惠活动。以下结合官方定义、实测数据与公示信息,完整还原核心内容,全程不带营销词汇,确保信息真实无篡改。
1253 3
|
前端开发 Java 测试技术
PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
289 6
|
8月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,实现强大语言理解与生成。其核心为自注意力机制,结合Token化、位置编码与嵌入层,支持万亿级参数规模。参数增长带来涌现能力,如复杂推理与泛化性能。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
机器学习/深度学习 算法 安全
【博士每天一篇文献-综述】2024机器遗忘最新综述之一:An overview of machine unlearning
本文提供了机器遗忘的全面定义、问题方程、精确与近似遗忘的概念,并分类总结了机器遗忘方法,讨论了其在联邦学习和终身学习中的应用,提出了未来研究方向,为机器遗忘研究领域奠定了理论基础并指出了实际应用的潜力与挑战。
1622 5
【博士每天一篇文献-综述】2024机器遗忘最新综述之一:An overview of machine unlearning
|
Web App开发 前端开发 关系型数据库
GitHub 2.8k star 开源既封神,“Liquid‑Glass‑React”,让你前端界面瞬间拥有苹果级液态玻璃效果!
Liquid-Glass-React 是一款开源前端组件,旨在将 Apple iOS 26 的“液态玻璃”视觉效果引入 React 应用。凭借逼真折射、多种反射模式、响应式交互及高度可配置性,它已获得 2.8k stars,成为提升 UI 质感的热门工具。
1530 0
|
存储 缓存 监控
如何提高服务器CPU性能?
如何提高服务器CPU性能?
1535 3
|
安全 测试技术 Python
XSS 检测神器:XSSfork 保姆级教程
XSS 检测神器:XSSfork 保姆级教程
XSS 检测神器:XSSfork 保姆级教程
|
存储 安全 JavaScript
XSS 检测神器:BruteXSS 保姆级教程
XSS 检测神器:BruteXSS 保姆级教程