2011-12-01 96 views
12

下面的代码瓦片指定插图内的图像面积:如何在iOS5之前做[UIImage resizableImageWithCapInsets:]?

UIEdgeInsets imgInsets = UIEdgeInsetsMake(10.f, 5.f, 13.f, 44.f); 
UIImage *image = [[UIImage imageNamed:@"fileName"] resizableImageWithCapInsets:imgInsets]; 

然而,这仅适用于iOS5的。我如何才能达到与iOS5兼容前的相同结果?

[UIImage stretchableImageWithLeftCapWidth: topCapHeight:]根据我的理解是不合适的,因为它假设tileable区域是1px宽。换句话说,它不会平铺,它会延伸。因此它不适用于模式,只适用于单色图像。这在下面的屏幕截图中演示。

再有就是[UIColor colorWithPatternImage:],但这种假设整个图像需要被平铺,它不允许对于必须保持皑皑的插图。

任何帮助表示赞赏,谢谢。

enter image description here

+0

我有完全相同的问题。一方面,他们在iOS 5中固定它。另一方面,我很难想出一个直接的方式来添加这个功能,所以它可以在iOS 4中工作。你决定做什么? –

+0

在这个功能之前,图像设计师是否忙于构建按钮? – Ellis

回答

2

我一直在寻找一个解决方案,这也。在这一点上,我想我会使用原始UIImage上的respondsToSelector:@selector(resizableImageWithCapInsets:)来查看该方法是否可用。如果不是,则使用可拉伸的图像。

我还在寻找一个更好的解决方案,如果一个出现,我会更新的答案。