3.UIImageView基本使用

来源:互联网 发布:手机淘宝如何评价 编辑:程序博客网 时间:2024/06/02 22:55

1.图片拉伸的几种方式

  • 方法一:iOS5,实现拉伸图片指定位置的方法

    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

    第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。
    根据设置的宽度和高度,将接下来的一个像素进行左右扩展和上下拉伸。

    示例:
    +(UIImage *)stretchedImageWithName:(NSString *)name{
    UIImage *image = [UIImage imageNamed:name];
    int leftCap = image.size.width * 0.5;
    int topCap = image.size.height * 0.5;
    return [image stretchableImageWithLeftCapWidth:leftCap topCapHeight:topCap];
    }

  • 方式2:iOS5,指定图片的上边,下边,左边,右边 多少距离是不可以拉伸的,默认的拉伸方案是平铺

    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;

    示例:
    +(UIImage *)stretchedImageWithName:(NSString *)name{
    UIImage *image = [UIImage imageNamed:name];
    CGFloat w = image.size.width;
    CGFloat h = image.size.height;
    UIImage *newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(h * 0.5 , w * 0.5 , h * 0.5 , w * 0.5)];
    return image;
    }

  • 方式3:iOS6方法,比方式2多了个拉伸参数

    拉伸有平铺和拉伸两种方式
    -(UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
    resizingMode:(UIImageResizingMode)resizingMode;

    示例:
    +(UIImage *)stretchedImageWithName:(NSString *)name{
    UIImage *image = [UIImage imageNamed:name];
    CGFloat w = image.size.width;
    CGFloat h = image.size.height;
    UIImage *newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(h * 0.5 , w * 0.5 , h * 0.5 , w * 0.5)
    resizingMode:UIImageResizingModeStretch];
    return image;
    }

  • 方式4:通过storyboard或者xib拉伸

    在storyboard中默认只能拉伸imageView,设置Stretching 的X Y width height,其中X Y是比例值
    0.5 0.5表示拉伸宽度一半和高度一半的地方,width 和height 是可拉伸的大小,一半设置0 , 0 即可;

2.imageView的contentMode

UIViewContentModeScaleToFill //图片拉伸至填充整个UIImageView(图片可能会变形)

UIViewContentModeScaleAspectFit //图片拉伸至完全显示在UIImageView里面为止(图片不会变形)

UIViewContentModeScaleAspectFill //图片拉伸至 图片的宽度等于UIImageView的宽度 或者 图片的高度等于UIImageView的高度 为止

UIViewContentModeRedraw//调用了setNeedsDisplay方法时,就会将图片重新渲染

UIViewContentModeCenter//居中
UIViewContentModeTop//居上
UIViewContentModeBottom//居底部
UIViewContentModeLeft//居左
UIViewContentModeRight//居右
UIViewContentModeTopLeft//居左上
UIViewContentModeTopRight//居右上
UIViewContentModeBottomLeft//居左下
UIViewContentModeBottomRight//居右下
带有Scale单词的,图片都会拉伸
带有Aspect单词的,图片都会保持原来的宽高比,图片不会变形

图解:

contentMode

0 0
原创粉丝点击