适用于iOS和Swift 3.0的等效Android 9-patch(多个可扩展区域)

适用于iOS和Swift 3.0的等效Android 9-patch(多个可扩展区域),ios,swift,image,nine-patch,stretch,Ios,Swift,Image,Nine Patch,Stretch,我对斯威夫特和iOS都是新手。在安卓系统中,我们可以轻松地拉伸图像,并在图像中放入一些内容,但我找不到任何与iOS相同的内容 我发现了很多关于Resizebleimage(withCapInsets)方法的教程/帖子,但这并不是我想要的。看这张图: 区域2、4、5、6和8将被拉伸,并且仅对其进行拉伸。 使用Android 9-patch,我可以定义多个可拉伸区域,如下所示: 在这里,只有红色区域是可拉伸的。此方法对于保持绿色区域固定非常有用,但使用Resizebleimage(带CapIns

我对斯威夫特和iOS都是新手。在安卓系统中,我们可以轻松地拉伸图像,并在图像中放入一些内容,但我找不到任何与iOS相同的内容

我发现了很多关于Resizebleimage(withCapInsets)方法的教程/帖子,但这并不是我想要的。看这张图:

区域2、4、5、6和8将被拉伸,并且仅对其进行拉伸。 使用Android 9-patch,我可以定义多个可拉伸区域,如下所示:

在这里,只有红色区域是可拉伸的。此方法对于保持绿色区域固定非常有用,但使用Resizebleimage(带CapInsets)是不可能的


此外,使用Android 9-patch,我们可以在蓝色区域轻松定义一个内容区域,如texview、imageview等,图像根据该区域的文本大小进行拉伸。iOS和Swift可以吗?

据我所知,
可调整大小的图像(带capinsets:)
是您唯一的内置选项,并且系统不支持具有两个可扩展区域的第二种方案

如中所述,使用2个图像视图应该可以实现您的目标。我建议创建一个UIImageView的子类,提供此功能,并在内部将图像分成两张图片,并为这两张图片创建一个单独的可拉伸图像。这应该不难做到

在谷歌上搜索了一下之后,看起来有人已经创建了一个iOS 9补丁映像库。查看此链接:


不幸的是,该回购协议上的自述文件链接已断开,因此您必须下载它并四处查看,以了解如何使用它。至于为什么自述文件是作为链接而不是内联的,我不知道。

你可以将CALayer及其内容与contentsCenter结合使用。contentCenter定义水平/垂直拉伸区域的CGRect。根据contentsCenter和contentsRect推断剩余的八个部分角点和单向拉伸边。但我认为它比android解决方案更复杂

如果它是一个简单的矢量图像(如上图所示),则可以使用UIBezierPath绘制形状。这是很容易定制,以伸展你需要的,并使一个更清晰的结果使用两个图像视图。不幸的是,它不是矢量图像,我找到了3个imageviews解决方案,但它不是很好,还有很多工作要做。。。在安卓系统中,我们只需一个imageview就可以轻松做到这一点,我无法想象在iOS上没有类似的解决方案!!!谢谢你的建议=)@Arthurius你可能已经采取了一些方法来解决这个问题。最好的解决方案是什么?你能更新一下吗?谢谢你的回答!我找到了这个库,但正如你所说,repo的自述链接被破坏了,库是用Objective-C编码的(我不懂这种语言)。。。我知道在swift项目中使用obj-c库是可能的,但要使用它,我必须了解库。这两个图像视图应该不难实现?我不确定,但如果这是唯一的解决办法,也许我会试试!我快疯了!!!英雄联盟