swift中怎么像android一样使用.9图拉伸

视觉给的图

实际上没有必要这么给哦(64*11)~~,右边还有有一些浪费像素的,完全可以给我们自己拉伸。
废话不多说。
哪假如说,输入的内容很长呢加入有255个点?。我们把他作为背景的话。

        let imageView = UIImageView.init(frame: CGRectMake(50, 100, 264, 11))
        imageView.image = UIImage.init(named: "kaopu_back")
        view.addSubview(imageView)
很差的效果

这样写代码,会惨目忍睹,这时候,你就需要图片拉伸了。

swift中怎么像android一样使用.9图拉伸_第1张图片
api在这里

使用起来也非常简单咯 ,就是

        let imageView = UIImageView.init(frame: CGRectMake(50, 100, 264, 11))
        imageView.image = UIImage.init(named: "kaopu_back")?.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 16, 0, 9))
        view.addSubview(imageView)
效果就是

那么为什么是:UIEdgeInsetsMake(0, 16, 0, 9),分别是(上,左,下,右),因为我们要告诉UIImage拉伸的区域是哪里。

swift中怎么像android一样使用.9图拉伸_第2张图片
这幅图够你懂了

那么对于我们的图片呢?

对于我们的图片呢?

那么,你理解为什么是UIEdgeInsetsMake(0, 16, 0, 9)了吧。

有人一定会问:

func resizableImageWithCapInsets(_ *capInsets*: UIEdgeInsets, resizingMode *resizingMode*: UIImageResizingMode) ->  UIImage

那mode取不不同值有什么效果呢?不指定默认就是Tile。

Stretch真的就像是.9拉伸一样,Tile有点repeat的意思。


        let imageView = UIImageView.init(frame: CGRectMake(50, 100, 264, 33))
        imageView.image = UIImage.init(named: "kaopu_back")?.resizableImageWithCapInsets(UIEdgeInsetsMake(4, 16, 4, 9))
        view.addSubview(imageView)

        let imageView2 = UIImageView.init(frame: CGRectMake(50, 150, 264, 33))
        imageView2.image = UIImage.init(named: "kaopu_back")?.resizableImageWithCapInsets(UIEdgeInsetsMake(4, 16, 4, 9), resizingMode: UIImageResizingMode.Stretch)
        view.addSubview(imageView2)

        let imageView3 = UIImageView.init(frame: CGRectMake(50, 200, 264, 33))
        imageView3.image = UIImage.init(named: "kaopu_back")?.resizableImageWithCapInsets(UIEdgeInsetsMake(4, 16, 4, 9), resizingMode: UIImageResizingMode.Tile)
        view.addSubview(imageView3)
swift中怎么像android一样使用.9图拉伸_第3张图片
不同效果

你可能感兴趣的:(swift中怎么像android一样使用.9图拉伸)