扩展知识

拉伸图片的4种方法(转)

2016-06-05  本文已影响888人  LZM轮回

为什么要拉伸图片呢? 有时候我们一个视图的大小是不固定的,它可能根据内容的不同展示不同的尺寸,但是希望图片可以只拉伸里面而保持四周不变.比如聊天的气泡:


聊天界面的气泡

这里给介绍4个拉伸图片的方法:
方法一:
resizableImageWithCapInsets: resizingMode:

是UIImage实例调用的方法,返回拉伸后的image
capInsets参数表示图片上下左右分别要保护的宽度或者高度(保持不变的边距),没被保护的地方会进行拉伸
resizingMode表示拉伸的部位是以何种方式显示,有平铺和拉伸两种选择

方法二:
stretchableImageWithLeftCapWidth: topCapHeight:

也是UIImage实例调用的方法,返回拉伸后的image
两个个参数分别表示要左边和上边被保护起来(不会变形)的宽度和高度
使用这个方法只会拉伸一个像素点,设置左边和上边的包括宽高后,右边和下边的保护宽高分别是:right = width - left - 1,bottom = height - top - 1,所以其实拉伸的只有中间一个像素点

方法三:
3 在.xcassets文件里面对单独的图片进行设置找到:

图片设置拉伸1

设置后变成:

图片设置拉伸2

只要选择了horizontal and Vertical,xcode就会自动算出应该保护的宽高,不用在代码里面做任何设置
补充一点: 如果图片有两种规格以上的图片(如:既有@1x图也有@2x图),那么所有规格的图片都需要这样设置一次.但其实如果要对图片进行拉伸使用,只要准备一张图片就够了.(20150731补充)
方法四: 给项目增加一个UIImage的分类
添加UIImage的分类其实和上面第一种方法是一样的,只是这里我们把它单独放在一个文件里面.分类实现:

这样,在设置需要拉伸的图片的时候,只要使用
xxxImage = [UIImage resizableImageNamed:@"xxx"];

是不是用起来跟原生的一样?

上一篇 下一篇

猜你喜欢

热点阅读