现在,总结一下设置iOS app引导页,所误入的坑
之前呢,所提交的版本没有怎么关注过引导页的优化问题,自认为让设计师搞几张不同屏(4/4s、5/5s/5c、 6/6s、 6 plus/6s plus)的图片就可以了,相当于是四种屏幕各切几套图片。但是呢,切好的png图片不能正常运行在6/6s上,会被拉伸变形,之后用的是jpg图片,单独放在了Supporting Files下供6/6s使用,可是如果把这些jpg图片放在一个真实guidePages文件下,用如下代码是找不到的,path是空
百度过好多,有说把文件添加到Copy Bundle Resources的,可是我的的确已经添加了,最终,试了试不加 “guidePages/” 这些字符,结果path是有值的,xcode7.3真是不按套路出牌。
回头看了看引导页图片尺寸,这几天搜了一些别人走过的坑自己琢磨一下,得知:
一、每个不同屏幕都做新的引导页,的确安装包会很大(因为我们的引导页好几张呢),可能会有两中解决办法了 1是背景色是不变的话,设计师可以只做中间的图片,这样会小一些, 2是只切割一套屏幕的引导页(6/6s的 750*1334)即可,当然只切割两套(4/4s、6/6s)也是可以的。
二、不同屏幕的屏大小比较:
4/4s 3.5inch 分辨率640*960 高宽比960/640 = 1.5
5/5s/5c/SE 4inch 分辨率640*1136 高宽比1136/640 = 1.775
6/6s/7/8 4.7inch 分辨率750*1334 高宽比1334/750 = 1.775
6plus/6splus
5.5inch 分辨率1242*2208 高宽比2208/1242 = 1.778
/7plus/8plus
x 5.8inch 分辨率1125*2436 高宽比2436/1125 = 2.165
可知 切割一套6/6s就可以了 ,小屏可做截取 大屏可做等比拉伸显示。
三、关于UIView的属性问题,UIView-UIImageView有个属性是contentMode,可取值:UIViewContentModeScaleToFill 拉伸图片至填充整个UIImageView,图片的显示尺寸会和imageVew的尺寸一样 。
UIViewContentModeScaleAspectFit 按照图片的原来宽高比进行伸缩,伸缩至适应整个imageView(图片的显示尺寸不能超过imageView尺寸大小)。
UIViewContentModeScaleAspectFill 按照图片原来的宽高比进行伸缩,伸缩至图片的宽度和imageView的宽度相等 或者 图片的高度和imageView的高度相等 (只有宽和高其中一个相等是不可以的,图片的缩放尺寸可以超过imageView尺寸大小,伸缩必有scale 等比伸缩必有aspect)如下图所示即可以了:
四、加载图片注意点:imageName:方式加载的图片---1、当对象销毁的时候,图片占用的内存不会随着一起销毁,内存由系统来管理,程序员不可控制 2、加载的图片,占用的内存非常大 3、相同的图片不会被重复加载到内存
imageWithContentsOfFile:方式加载图片---1、当对象销毁的时候,图片占用的内存会随着一起销毁 2、加载的图片占用的内存较小 3、相同的图片如果被多次加载就会占据多个内存空间
所以,如果图片比较小,并且使用非常频繁,可以使用imageName:(eg icon),如果图片比较大,并且使用比较少,可以使用imageWithContentsOfFile:(eg 引导页 相册)