图片大小和IPA体积
- 有一些切图可以通过切小图然后拉伸来用较小的素材完成界面效果,可以有效的减少IPA体积
- 对于PNG图片,由于它内部保存了额外的分层和透明通道信息,统称为EXIF,所以它会比JPG图片大一些。App开发推荐使用PNG图片是因为XCode会在打包时压缩PNG图片的大小。我们可以写一个脚本,在打包前,把PNG图片中这些多余的信息,删除掉。
如何对图片进行拉伸
代码方式
可以通过代码进行拉伸
// create a resizable version of this image. the interior is tiled when drawn.
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0);
// the interior is resized according to the resizingMod
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0);
需要注意的是UIEdgeInsets,这是一结构体,包含 上/左/下/右四个参数。上左下右4参数定义了cap inset,就是离四条边的距离。拉伸时,cap到边的部分不会被拉伸,其余部分则会被拉伸.尤其需要注意的是,拉伸的时候左右和上下是独立进行的,并不是轮廓的直接放大
如上图所示,为什么第二行出现了两个箭头
- 拉伸的时候,是按前文说的两个方向来拉伸
- 拉伸的部分,是以tiled(铺地板)方式,简单的说就是以镜像的方式
按照1的规则,拉伸的时候,水平和垂直方向都分别拉伸。这样在水平拉伸的时候,箭头其实处于用于拉伸的部分。在拉伸的时候,先按照原有的尺寸添加进去,不足的地方再把中间不拉伸的部分填充进去,周而复始,直到填充完毕。因此,就有上面的现象了。
xcassets的方式
如果用Xcaasets管理图片,那么拉伸可以用GUI的方式进行,如下图拉伸方式可以选择横向/双向/纵向三种,淡色的部分是需要被填充的部分,而第一和第二条卡尺线之间的深色的部分,则是被重复填充的镜像.
参考: