是否有iPhone九宫装载机?(Is there a nine-patch loader for i

2019-06-26 01:58发布

Android已经确定拉伸图像称为九宫格的一个很好的方式。 见这些文档为理念的描述。 我们的想法是围绕用1像素的边框,您可以定义拉伸区域和图像的填充尺寸的png图片。 这是绝对精彩,我想使用这个想法在我的iPhone应用程序。 写我自己的九补丁的UIImage装载机之前,我想我会看是否已经存在。 谷歌不返回任何结果,所以我没有太多的希望,但它不会伤害问,对不对? :-)

编辑:伙计们,我很欣赏的答案,但我知道stretchableImageWithLeftCapWidth... 。 我在寻找的代码,需要一个路径@"foo.9.png" ,并返回一个可拉伸UIImage 。 此代码无疑将使用stretchableImageWithLeftCapWidth...内部。 我敢肯定,我可以使用该方法编写的代码我自己。 但我问别人已经做到了。

Answer 1:

我收到了来自谁告诉我,他们已经创造了这样一个库,在Apache许可证下发布了它的软件Tortuga22电子邮件:

公告: http://blog.tortuga22.com/2010/05/31/announcing-tortuga-22-ninepatch/

源代码: http://github.com/tortuga22/Tortuga22-NinePatch

实例:

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];


Answer 2:

还看的UIView的contentStretch财产。 这是更强大的乖巧比stretchableImageWithLeftCapWidth。 基本上,它的工作原理是只定义图像内的拉伸矩形,并自动创建一个缩放九补丁。 该内部矩形可以是任何东西 - 它甚至没有是在图像的中心。 加上不像stretchableImage此方法将适当缩小图形和表现如预期的图形与照明或光泽。 我想不出任何真实世界的应用程序,你会想比这个更多。



Answer 3:

UIImage不支持类似的东西。 看到

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight和leftCapWidth和topCapHeight文档

基本图像未在区域拉伸从左和右边缘leftCapWidth像素和像素topCapHeight从顶部和底部。 当图像被缩放的这些限制内的区域是受拉伸。



Answer 4:

所有UIImage图像支持这一本身。 默认情况下,整个图像是可拉伸的,但可以与设置帽leftCapWidthtopCapHeight属性也可以生成一个从现有UIImage- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight方法。

请注意,在苹果的实现,当你设置这些值中的一个或两个,可拉伸区域被强制为单个像素的高/宽。



文章来源: Is there a nine-patch loader for iPhone?