UIView详解:7-内容模式contentMode
视图的contentMode属性决定了边界变化和缩放操作作用到视图上产生的效果。视图在屏幕上显示后,渲染后的内容会被缓存在视图下面的层(layer)上,当视图的大小发生变化时,UIKit并不强制对视图进行重画,而是根据其contentMode属性决定如何显示缓存内容。由于这种机制的存在,当我们修改视图的大小时,可以提升性能。
1、contentMode简介
contentMode经常用于图像视图UIImageview。当希望在App中调整控件的尺寸时,务必优先考虑使用contentMode,这样做可以在视图的外观发生形变时,避免编写定制的描画代码。这是因为:每个图像视图的关联图像都由Core Animation来缓存,因此不需要编写代码就可以支持动画,即不需要再次调用drawRect:方法,从而大大提高了性能。
在开发过程中,当发生如下两种情况时,会使用到contentMode:
- 改变frame或bounds中的高度或宽度;
- 修改transform属性。
2、常见的contentMode
默认情况下,contentMode的值被设置为UIViewContentModelScaleToFill,意味着视图内容(一般情况下是一张图片)总是填充整个视图划定的矩形区域,有可能这张图片会被拉伸。
在实际的开发过程中,一般需要根据设计师提供的图片元素的大小,来设置视图的大小,这样能够保证显示出来的图片效果不发生变形。
常见的一些contentMode对比:
3、contentMode的设置方法
contentMode可以在Storyboard中以及代码中进行设置。
- 使用Storyboard设置。如下图所示,选中一个视图控件,可以在右侧的选项中设置contentMode。
- 使用代码来设置contentMode。UIView类中提供了contentMode属性,其是一个UIViewContentMode类型的变量,默认取值为UIViewContentModeScaleToFill。
@property(nonatomic) UIViewContentMode contentMode;
typedef NS_ENUM(NSInteger, UIViewContentMode) {
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw,
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};
示例代码
https://github.com/99ios/7.2.7
文章发布时间为: September 27th , 2016 at 10:46 pm
最后编辑时间为: September 6th , 2017 at 11:11 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 6th , 2017 at 11:11 am
本文由 99ios 创作,转载请注明出处