是否有iPhone九宫装载机?
-
16-09-2019 - |
题
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
图像支持此本身。默认情况下,整个图像是可拉伸的,但可以与leftCapWidth
和topCapHeight
属性中设置上限,也可以产生一个从与UIImage
方法现有- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
。
请注意,在苹果的实现,当你设置一个或两个值,拉伸区域被强制为单个像素的高/宽。