UIViewContentMode各模式的含义和效果

原创 2015年11月20日 10:53:19

       在iOS应用开发中我们常常要对视图的contentMode属性进行设置,尤其在使用UIImageView视图时设置这个属性的概率很高。我们知道contentMode的类型是UIViewContentMode的枚举,那么其每个值是什么含义,设置后会有什么效果呢?下面就来总结下。

UIViewContentModeLeft

       如果将UIImageView对象的contentMode设置为UIViewContentModeLeft,其内部的图片会按照原有的尺寸大小,以垂直居中,水平居左的方式显示。见UIViewContentModeLeft模式效果(1)。如果图片的尺寸大于UIImageView视图的size,那么超出size的部分将会被裁减掉。如UIViewContentModeLeft模式效果(2)所示。

              

     UIViewContentModeLeft模式效果(1)                                                                   UIViewContentModeLeft模式效果(2)

        至于其它模式,诸如UIViewContentModeRight、UIViewContentModeTop、UIViewContentModeCenter之类模式与UIViewContentModeLeft类似,只是对齐方式不同而已。我们可以看下UIViewContentModeCenter模式的显示效果。

              

            UIViewContentModeCenter模式效果(1)                                                         UIViewContentModeCenter模式效果(2)


       由此我们可以得出这样的结论:UIViewContentModeLeft、UIViewContentModeRight等这类带有位置信息的模式,不会改变图片的尺寸,或者更确切地说不会对图片进行缩放处理,但有可能对图片进行裁剪操作,这仅发生在图片尺寸超出UIImageView视图size的情况下。

       说完了UIViewContentModeLeft,我们来看看UIViewContentModeScaleAspectFit、UIViewContentModeScaleAspectFill、UIViewContentModeScaleToFill三个比较难理解、容易混淆的模式。

UIViewContentModeScaleAspectFit

                                    

                                                                              UIViewContentModeScaleAspectFit模式效果

       在UIViewContentModeScaleAspectFit模式下,UIImageView视图会将图片进行等比例缩放,请注意是等比例缩放。缩放到图片能够在视图size内完整显示(水平垂直方向均居中),且图片的宽度或者高度(至少一个)恰好与视图的宽度或者高度相等。如果高度相等,则图片左右两边会留下等宽的空白空间,如上面UIViewContentModeScaleAspectFit模式效果所示;如果宽度相等,则图片的上下方会留下等高的空白空间;如果宽高都相等,则图片恰好铺满整个视图。UIViewContentModeScaleAspectFit模式使用等比例缩放,且不对图片进行裁剪,显示效果比较协调,因而是我们最为常用的一种模式。

UIViewContentModeScaleAspectFill

                                                     

                                                                              UIViewContentModeScaleAspectFill模式效果

        UIViewContentModeScaleAspectFill模式也是对图片进行等比例缩放,与UIViewContentModeScaleAspectFit模式不同的是,它将图片缩放到正好铺满整个UIImageView视图显示,且图片的宽度或者高度(至少一个)恰好与视图的宽度或者高度相等。如果高度相等,则图片左右会被裁剪掉等宽的内容;如果宽度相等,则图片的上下会被裁剪掉等高的内容,如上面UIViewContentModeScaleAspectFill模式效果所示;如果宽高都相等,则图片不会被裁剪。

UIViewContentModeScaleToFill

                                                      

                                                                                 UIViewContentModeScaleToFill模式效果

       相较于UIViewContentModeScaleAspectFit和UIViewContentModeScaleAspectFill,UIViewContentModeScaleToFill模式好理解多了。它是将图片的宽高强行变成和UIImageView视图的宽高相等来显示,因此该变化无法保证是等比缩放。如果图片的宽高比与视图的宽高比相同,则是等比缩放,否则非等比缩放。这样极易导致图片变形,显示不协调。尽管如此,UIViewContentModeScaleToFill仍是比较常用的一种模式,某些视图(比如UIButton)的背景图backgroundImage就是以该模式为默认的显示模式。

UIViewContentModeRedraw

       除了上述模式,UIViewContentMode还有一个枚举值UIViewContentModeRedraw。UIViewContentModeRedraw模式比较特别,它不是用来说明如何展示图片的,而是告诉视图在每次设置或者更改frame的时候自动调用drawRect:方法。

       弄清楚了这些模式的含义和作用,我们就可以在开发iOS应用的过程中更加得心应手地设置图片了。


以上内容是本人结合开发经验并参考了部分资料而撰写的,如有不妥之处还请不吝赐教,愿大家能够互相学习,共同进步。

版权声明:本文为博主原创文章,未经博主允许不得转载。

UIViewContentMode各类型效果

UIViewContentMode typedef enum {     UIViewContentModeScaleToFill,     UIViewContentModeScale...
  • iunion
  • iunion
  • 2012年04月24日 16:53
  • 112644

UIImageView 的contentMode属性知识点回顾

(1)定义如下:typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFill, 缩放内容到合适比例...

UIViewContentMode各类型的效果

UIViewContentMode各类型效果 UIViewContentMode各类型de typedef enum {     UIViewContentMod...

UIViewContentMode各类型效果

UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定: UIViewContentModeScaleToFill UI...

windows开机的集中模式含义

  • 2010年05月06日 19:24
  • 29KB
  • 下载

UIViewContentMode解释

UIViewContentmode的含义 UIView有个UIViewContentMode类型的属性contentMode,可以通过它来修改视图的内容显示模式。 1)UIViewContentM...

整理Glide方法使用含义(毛玻璃效果,实现圆角等)

现在项目中一般使用Glide进行图片加载,于是找一下他的各个方法的使用,方便使用而已。添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0'基本使用...

Android:控件anim动画效果xml文件属性值含义

① 打开Eclipse,新建Android工程 ② 在res目录中新建anim文件夹 ③ 在anim目录中新建一个myanim.xml(注意文件名小写) ④ 加入XML的动画代码 apk/...

架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别

架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别
  • ksp416
  • ksp416
  • 2017年12月08日 10:05
  • 13

架构,框架,模式,模块、组件、插件的含义和区别

架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别。经常看到这些概念,但是有些含糊,花点儿功夫整理一下,结果还是有些地方理解的不透彻,先将整理的内容写下来,以供交流。左侧英文栏中有些单词被分...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIViewContentMode各模式的含义和效果
举报原因:
原因补充:

(最多只允许输入30个字)