UIImageView 的contentMode属性应用

UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定:
typedef NS_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,//这个选项是单视图的尺寸位置发生变化的时候通过调用setNeedsDisplay方法来重新显示。             // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter, //

保持图片原比例在视图中间显示图片内容

如果视图大小小于图片的尺寸,则图片会超出视图边界

            // contents remain same size. positioned adjusted.
    UIViewContentModeTop,//保持图片原比例在视图中间顶部显示图片内容
    UIViewContentModeBottom,//保持图片原比例在视图中间底部显示图片内容
    UIViewContentModeLeft,//保持图片原比例在视图中间左边显示图片内容
    UIViewContentModeRight,//保持图片原比例在视图中间右边显示图片内容
    UIViewContentModeTopLeft,//保持图片原比例在视图左上角显示图片内容
    UIViewContentModeTopRight,//保持图片原比例在视图右上角显示图片内容
    UIViewContentModeBottomLeft,//保持图片原比例在视图左下角显示图片内容
    UIViewContentModeBottomRight,//保持图片原比例在视图右下角显示图片内容
};

注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。

例如:


显示正常的图片
_image = [[UIImageView alloc] init]; 
image = [UIImage imageNamed:@"12.jpeg"]; 
_image.backgroundColor = [UIColor brownColor]; 
_image.clipsToBounds = YES;
_image.frame = CGRectMake(100, 130, 100, 100); 
_image.contentMode = UIViewContentModeScaleToFill; 
[self.view addSubview:_image];  

你可能感兴趣的:(UIImageView,contentMode)