在iOS中自定义“可resize的图像”

UIImage API提供了调整图像大小的方法,其中某些区域被拉伸,而其他区域保持不变 – 非常适合可resize的UI元素的背景图像。

现在我正在寻找一种方法来为更复杂的背景图像定制这种行为。

这是什么- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets; 确实。 透明区域保持不变,当视图大小改变时红色区域被拉伸。

在这里输入图像说明

这就是我想要的 – 对延伸的区域进行更细粒度的控制:

在这里输入图像说明

我想我必须通过覆盖我的UIView子类的-(void)drawRect:方法,然后使用Quartz来完成图像的绘制。

我只是不知道我将不得不使用哪个系统API。

有谁能给我一个提示如何做到这一点? 提前致谢!

我只是用三个独立的UIImageViews与resizableImageWithCapInsets里面。 你也可以在drawRect中使用例如CGPattern,但是在缩放视图时会遇到性能问题。