网络/相机获取图片时如何避免图片变形

在IOS项目中,显示相机拍摄图片到UIImageView时,因拍摄横竖屏不同,图片尺寸和长宽比不定,直接显示会变形。contentMode是UIImageView的枚举型填充属性,使用UIViewContentModeScaleAspectFill属性可防止图片拉伸,保持长宽比,确保布局不变形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • 在写项目时,要显示从相机获取的图片,比如将它显示在一个UIImageView上,但是由于相机有横屏与竖屏拍摄,导致图片的尺寸,长宽比都是不一定的
  • 如果直接把不合适的图片塞到UIImageView里,图片会变形,强行适应frame

contentMode

介绍

  • contentMode就是一个属于UIImageView的枚举型属性,即填充属性
typedef NS_ENUM(NSInteger, UIViewContentMode) {
//图片拉伸填充至整个UIImageView(图片可能会变形),这也是默认的属性,如果什么都不设置就是它在起作用
    UIViewContentModeScaleToFill,
//图片拉伸至完全显示在UIImageView里面为止(图片不会变形)
    UIViewContentModeScaleAspectFit,
//图片拉伸至图片的的宽度或者高度等于UIImageView的宽度或者高度为止.看图片的宽高哪一边最接近UIImageView的宽高,一个属性相等后另一个就停止拉伸.
    UIViewContentModeScaleAspectFill,
//调用setNeedsDisplay 方法时,就会重新渲染图片

//下面的属性都是不会拉伸图片的
    UIViewContentModeRedraw,
//中间模式
    UIViewContentModeCenter, 
//顶部
    UIViewContentModeTop,
//底部
    UIViewContentModeBottom,
//左边
    UIViewContentModeLeft,
//右边
    UIViewContentModeRight,
//左上
    UIViewContentModeTopLeft,
//右上
    UIViewContentModeTopRight,
//左下
    UIViewContentModeBottomLeft,
//右下
    UIViewContentModeBottomRight,
};

UIViewContentModeScaleAspectFill

  • 一般使用UIViewContentModeScaleAspectFill属性来防止图片被拉伸,因为他会率先去匹配你设置的长和宽,在这个基础上保持长宽比的设置图片,这样也可以让你的布局不至于完全变形
  • 也就是说设置成UIViewContentModeScaleAspectFill后,会确保长宽中的一个是符合你设置的frame的
  • 有关其中的详细实现,可以看下第二篇参考文章

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值