iOS图片指定部位拉伸,类似Android 9patch(.9格式)

关于图片拉伸,搞过Android开发屏幕适配的人应该都听说过9patch,是为了解决不同屏幕下,图片拉伸不失真的一种图片格式。使用.9png格式的图片,可以指定拉伸区域和不可拉伸区域,比如带圆角的按钮,带箭头的对话框等,可以指定圆角或者箭头不拉伸,而只拉伸可以重复的“长方形”区域,关于.9png我也是最近听Android开发的同事讲到的,听完后觉得简直666啊,反过来一想咱iOS不应该没有这种功能呀,好在被我发现勒

其实iOS在5.0版本后,也提供了类似的功能,UIImage的resizableImageWithCapInsets:resizingMode:
UIImageResizingModeTile(平铺)、UIImageResizingModeStretch(拉伸) 两种图片拉伸的模式;

假如原图片icon的尺寸为:200x500 且圆角大小为10
拉伸后的尺寸为:200x800
UIImage *image = [UIImage imageNamed:@"icon.png"];
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(300, 10, 10, 10) resizingMode:UIImageResizingModeStretch];

UIEdgeInsets 指定的位置为可拉伸的区域,top = 300 表示从距离图片顶部300的位置开始拉伸,left、bottom、right都为10,刚好都是圆角处的大小,假如图片上有圆角或者箭头,则圆角和箭头都不能被拉伸,所以在设置拉伸区域时需要考虑圆角和箭头距离边界的宽度,也就是拉伸部位最好就是一块矩形区域,这样拉伸后的不会出现变形,上述代码是自己项目中使用的,亲测有效并且特别好用,毕竟Android那么高大上,咱iOS也不能out呀 哈哈哈!

亲测十分好用!!!

你可能感兴趣的:(iOS图片指定部位拉伸,类似Android 9patch(.9格式))