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单词的,图片都会保持原来的宽高比,图片不会变形
图解: