UIView的contentMode使用小结


Content Modes

       每一个视图都有一个 contentMode 来控制当视图的几何形状发生变化的时候如何复用它的内容,当view第一次被显示出来,它会将自己的内容渲染被位图持有。在那之后,改变view的几何结构将并不能导致位图被重新创建(绘制)。但是属性值ContentMode决定了bitmap是否缩放、位置在哪儿(固定在左边、右边、上面、下面、居中)。默认情况下,contentMode的值是UIViewContentModeScaleToFill。

contentMode什么时候起作用

1)视图frame或bounds的高宽发生变化
2)赋给 view的transform属性的值带有scale

有以下常量可以设置:
typedefNS_ENUM(NSInteger, UIViewContentMode) {
    UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
    UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter,              // contents remain same size. positioned adjusted。居中显示
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
};

注意:
       UIViewContentModeScaleToFill :缩放图片,使图片充满容器,属性会导致图片变形。
       UIViewContentModeScaleAspectFit:会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白,不会填充整个区域。
       UIViewContentModeScaleAspectFill:也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。
      Top,Left,Right等等就是将突破放在View中的位置进行调整。
    内容模式有利于重复使用view的内容,如果你想自定义视图并在缩放和计算操作期间重绘它们,可以使用 UIViewContentModeRedraw 值,设置该值将使系统调用 drawRect:方法来响应视图的几何结构的改变,一般情况下,应该尽量避免使用该值。

官方给了一组图片如下:
                                                             Figure 1-2  Content mode comparisons
                                                       

你可能感兴趣的:(UIView的contentMode使用小结)