关于 image slice,除了直接在 asset catalog 里面可以设置外,UIKit 也提供了一个 api 供我们使用。
@available(iOS 6.0, *)
open func resizableImage(withCapInsets capInsets: UIEdgeInsets, resizingMode: UIImageResizingMode) -> UIImage
但是这个 api 却不如用 asset 拖动强大,我们通过来看一下区别。
可以看到,在 asset catalog 里面有三条线供我们拖动,从左到右(或从上到下),第一条线到最左边的距离和第三条线到最右边的距离称为 End cap area,这部分在图片被拉伸时保持不变,第一条线到第二条线之间被称为 Resizeable area,这部分在图片拉伸时会通过重复像素或者重复自身来拉伸,而这里奇怪的地方就是,在 asset catalog 里面我们可以指定这部分的大小,而在 api 里我们无法进行图中 width 的设置,另外第二条线到第三条线之间的区域将不会被显示,在 api 里我们也无法设置这个部分。