iOS处理图片拉伸的几种方法

iOS图片拉伸的几种方法

我们知道,图片越大,读取速度越慢,占用内存更大。因此,为了节约系统资源和内存,对于简单的图片我们可以通过对小的图片进行拉伸的方法得到我们需要的大图片。
在查阅相关资料后,这里总结了几种图片拉伸的方法(在不影响显示分辨率的情况下):

  • - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
  • - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
  • contentsCenter
  • contentsGravity
    其中,前两个方法是UIImage提供的独有的方法,后两个是CALayer的contents属性,适用更广。

方法一

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
适用:NS_AVAILABLE_IOS(5_0)
参考博客http://blog.csdn.net/q199109106q/article/details/8615661


方法二

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
适用: NS_AVAILABLE_IOS(6_0)
该方法是iOS6.0对方法一的拓展,它提供了两种拉伸模式(resizingMode):UIImageResizingModeTile和UIImageResizingModeStretch,这篇博客http://www.jianshu.com/p/a577023677c1对其做了详细的介绍。


方法三

-contentsCenter
它是CALayer的一个属性,因此可以用在UIImage之外的视图。并且,工作起来的效果和UIImage里的-resizableImageWithCapInsets: 方法效果非常类似,只是它可以运用到任何寄宿图,甚至包括在Core Graphics运行时绘制的图形。
详细的讲解可参考:https://zsisme.gitbooks.io/ios-/content/chapter2/the-contents-image.html


方法四

-contentsGravity
与contentsCenter一样,它也是CALayer的contents属性。它提供了多种方式,在拉伸方面,只适用于纯色或渐变色。例如,当它的值为kCAGravityResize,垂直方向的渐变只需要提供宽度为1个像素,高度任意的原始图片,而水平方向则只需提供高度为1个像素,宽度任意的图片即可。
详细的讲解可参考:https://zsisme.gitbooks.io/ios-/content/chapter2/the-contents-image.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值