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

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

有帮助吗?

解决方案

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

公告: http://blog.tortuga22.com / 2010/05/31 /宣布-托尔图加-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];

其他提示

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

UIImage不支持类似的东西。参见

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top