iOS 和 Swift 3.0 的等效 Android 9 补丁(多个可拉伸区域)
Equivalent Android 9-patch for iOS and Swift 3.0 (multiple stretchable areas)
我是 Swift 和 iOS 的新手。在 Android 中,我们可以轻松地拉伸图像并将一些内容放入该图像中,但我没有找到 iOS.
的任何等效项
我发现很多 tutorial/post 使用 resizableImage(withCapInsets) 方法,但这并不是我想要的。看这张图 :
区域 2、4、5、6 和 8 将被拉伸,并且只有它们。
使用 Android 9-patch,我可以定义多个可拉伸区域,如下所示:
在这里,只有红色区域是可伸缩的。这个方法对于保持绿色区域固定确实很有用,但是用resizableImage(withCapInsets)是做不到的。
此外,使用 Android 9-patch,我们可以轻松定义一个内容区域,如 texview、imageview 等,在蓝色区域,图像根据文本大小拉伸区域。 iOS 和 Swift 可以吗?
据我所知,resizableImage(withCapInsets:)
是您唯一的内置选项,系统不支持您的带有 2 个可拉伸区域的第二种情况。
如 the other thread Jon Rose linked to 中所述,使用 2 个图像视图应该可以实现您的目标。我建议创建一个 UIImageView 的子类来提供此功能,并在内部将图像分成两部分,并为两者创建一个单独的可拉伸图像。应该不难吧。
经过一些谷歌搜索后,看起来其他人已经创建了一个 iOS 9 补丁图像库。看看这个 link:https://github.com/andyland/Tortuga22-NinePatch
不幸的是,该存储库上的自述文件 link 已损坏,因此您必须下载它并四处寻找以弄清楚如何使用它。至于为什么把自述文件放在 link 而不是内联,我不知道。
您可以将 CALayer 及其 contentsRect 与 contentsCenter 结合使用。 contentCenter 定义了 horizontally/vertically 拉伸区域的 CGRect。剩余的八个部分角和单向拉伸边缘是根据 contentsCenter 和 contentsRect 推断的。但我认为这是比 android 解决方案更复杂的方法。
我是 Swift 和 iOS 的新手。在 Android 中,我们可以轻松地拉伸图像并将一些内容放入该图像中,但我没有找到 iOS.
的任何等效项我发现很多 tutorial/post 使用 resizableImage(withCapInsets) 方法,但这并不是我想要的。看这张图 :
区域 2、4、5、6 和 8 将被拉伸,并且只有它们。 使用 Android 9-patch,我可以定义多个可拉伸区域,如下所示:
在这里,只有红色区域是可伸缩的。这个方法对于保持绿色区域固定确实很有用,但是用resizableImage(withCapInsets)是做不到的。
此外,使用 Android 9-patch,我们可以轻松定义一个内容区域,如 texview、imageview 等,在蓝色区域,图像根据文本大小拉伸区域。 iOS 和 Swift 可以吗?
据我所知,resizableImage(withCapInsets:)
是您唯一的内置选项,系统不支持您的带有 2 个可拉伸区域的第二种情况。
如 the other thread Jon Rose linked to 中所述,使用 2 个图像视图应该可以实现您的目标。我建议创建一个 UIImageView 的子类来提供此功能,并在内部将图像分成两部分,并为两者创建一个单独的可拉伸图像。应该不难吧。
经过一些谷歌搜索后,看起来其他人已经创建了一个 iOS 9 补丁图像库。看看这个 link:https://github.com/andyland/Tortuga22-NinePatch
不幸的是,该存储库上的自述文件 link 已损坏,因此您必须下载它并四处寻找以弄清楚如何使用它。至于为什么把自述文件放在 link 而不是内联,我不知道。
您可以将 CALayer 及其 contentsRect 与 contentsCenter 结合使用。 contentCenter 定义了 horizontally/vertically 拉伸区域的 CGRect。剩余的八个部分角和单向拉伸边缘是根据 contentsCenter 和 contentsRect 推断的。但我认为这是比 android 解决方案更复杂的方法。