如何让 UIImage 只在特定区域拉伸?

How to let a UIImage only stretch in a specific area?

var contentImageView: UIImageView!{
    didSet{
        contentImageView.image!.resizableImageWithCapInsets(UIEdgeInsets(top: 5,left: 5,bottom: 5,right: 5))
    }
}

我在网上搜索后试过这个代码。

但是没有成功,结果是:

有没有更好的实现方式?

可以使用方法

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;

capInsets是一个特定的区域(例如UIEdgeInsetsMake(10, 18, 10, 18)),resizingMode应该select UIImageResizingModeStretch .

UIImage *image = [[UIImage imageNamed:@"bubble.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 18, 10, 18) resizingMode:UIImageResizingModeStretch];
bubbleImageView.image = image;

Xcode.xcassets 中有一个时尚的选项。您可以 select 图像并从那里对其进行切片,以便它可以在特定部分拉伸,下面是图像,请浏览此选项。

  1. 为了您的目的,只需 select 聊天气泡的中间选项(垂直和水平切片)。

  1. 切片后。

  1. Top Image 是经过切片的图像。底部图像是没有图像 切片。

借用 Bhavin 的图片进行演示:D