iOS 实现使用.9图片

很多时候非常羡慕安卓可以使用.9图片,不管怎么拉伸都不会变形,作为傲娇的iOS攻城狮的我坚信这种事在我大iOS里应该也是可以的,所以,找资料。最终通过不懈努力,找到了答案,终于实现了,在我大iOS中可以像安卓那样使用.9图片的方法了

官方文档api

@interface UIImage(UIImageDeprecated)

// use resizableImageWithCapInsets: and capInsets.

  • (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED;
    @property(nonatomic,readonly) NSInteger leftCapWidth __TVOS_PROHIBITED; // default is 0. if non-zero, horiz. stretchable. right cap is calculated as width - leftCapWidth - 1
    @property(nonatomic,readonly) NSInteger topCapHeight __TVOS_PROHIBITED; // default is 0. if non-zero, vert. stretchable. bottom cap is calculated as height - topCapWidth - 1

@end

  • 代码效果
UIImage *img = [UIImage imageNamed:@"icon_zb_comment_bg"];
img = [img stretchableImageWithLeftCapWidth:25 topCapHeight:15];
    
UIImageView *ivBG = [[UIImageView alloc]initWithFrame:CGRectMake(10, 100, [UIScreen mainScreen].bounds.size.width - 20, 80)];
ivBG.image = img;
[self.view addSubview:ivBG];
  • 上面代码里重点的一句
    img = [img stretchableImageWithLeftCapWidth:25 topCapHeight:15];

补充

2019.11.11 加班实在太困了,敲不了代码,整理下文章吧。
这次补充的内容可以说是太牛逼了,相信有一部分人是不知道Xcode自带的这个功能,括弧知道的朋友就别在心里默默的嘲讽我这个后知的人了哈,别装逼括弧完liao(三声)网上说,这个功能是Xcode5就开始支持的了,奈何我呢?当时没涉及到这方面的工作,也没瞎猫碰到死耗子,所以才会有现在这些话了。
好了,废话不多说,接下来看图说话……

  • 1、先上三张图,注意图片名字


    UI给我原图.png
不拉伸效果图.png
拉伸后效果图.png

哎(尖锐的拔高四声)~对吧!看出来效果了吧,同一张图片,png格式的。那么怎么做的呢?一种是上面的代码方式,另一种就是接下来要介绍的方式了。

  • 2、首先,把UI给你的图拉进你的项目中,起一个拉风的名字,比如:abcdefg@2x.png。放到如下的位置:Assets.xcassets,正常情况下是显示成这个样子的
    1.png

看到右下角那个Show Slicing了吗?鼠标移过去,点它就对了,然后出现下面的页面

2.png

继续移动鼠标,点中间那个Start Slicing的按钮,然后又出现下面的页面

3.png

在出现的这三个图标,我们可以自由选择,从左往右分别简单介绍下每个图标代表的含义:1、左右拉伸;2、上下左右拉伸;3、上下拉伸。简单吧?没错,就是这么简单的含义。同样的,点开Xcode右边的工具栏,滑到最底部,如下两张图:


4.png
5.png

看到Slicing这一栏了吧,在这里也可以设置拉伸方式,也可以取消拉伸,鼠标点击Slices对应的选项框,弹出如下样式,从上到下分别简单介绍下每个选项代表的含义:1、取消拉伸;2、左右拉伸;3、上下拉伸;4、上下左右拉伸。

6.png

好,选好了你想要的拉伸方式之后,在下面的四个输入框中(Left、Right、Top、Bottom)中,你可以随意设置你的拉伸起点,按照你的需求填写数字就可以。
最后看到Center这一栏了吧,其实这个位置的设置我个人觉得作用都差不多,鼠标点击Center对应的选项框,弹出如下样式,从上到下分别简单介绍下每个选项代表的含义:1、拉伸;2、平铺。

7.png

然后下面对应的两个输入框(Width、Height),你所填写的数字可以决定拉伸或平铺的区域大小,一般我都是设置1*1的大小。设置好了之后,回头运行下项目,看下效果,嗯,跟自己预期的样式不太一样,那怎么办呢?修改设置的值呗,一遍遍试,试到可以了为止,哈哈哈哈,别动手别动手,有话好好说呗,那我就真的是这样做的好吧。

到这里,对这篇文章的补充就结束了,希望对有需要的朋友能有帮助!

推荐阅读更多精彩内容