项目的基本配置
1. 图片素材的位置
图一如图一所示,我们在开发中,一般会把素材放到如上两个位置A & B
对于放到
Assets.xcassets
文件夹的素材通过UIImage.init?(named name: String)
加载
public /*not inherited*/ init?(named name: String) // load from main bundle
let image = UIImage(named: "test.jpg")
加载顺序是先去Assets.xcassets中找对应文件名的素材,如果没有会去MainBundle中找到对应的素材,也就是先B后A
对于放到项目主文件夹中的素材,我们通过Bundle.main.path(forResource name: String?, ofType ext: String?)
let imagePath = Bundle.main.path(forResource: "test", ofType: "jpg")
let image = UIImage(contentsOfFile: imagePath)
该方式加载素材不会去到Assets.xcassets
中加载,会直接去MainBundle
中找,如果找不到,为空
在开发中,项目中经常会用到的素材最好放在Assets.xcassets中,通过UIImage.init?(named name: String)
加载会把图片缓存,如果经常用到,这样可以保证节省系统资源。反之项目中不常用到的素材,最好放到项目主文件夹(MainBundle)中,通过该方式加载素材会获取到素材的路径path,然后通过public init?(contentsOfFile path: String)加载,通过public init?(contentsOfFile path: String)
加载图片不会缓存图片。节省资源,比如第一次安装App的引导素材偏大且不常用,使用这种方式更好!
2. 屏幕尺寸和启动图片的关系
屏幕尺寸是等于对应启动图片的大小的,如果缺少某个尺寸的图片,如果缺少4.7寸的图片,那么当App运行在4.7寸屏幕的手机上时,会出现屏幕显示异常。系统如果发现没有找到当前设备屏幕对应的尺寸的图片会去找小于当前屏幕尺寸的素材,随后拉伸素材直至占满屏幕。
3. Target Membership
对于项目中的文件,大部分我们选中会发现在XCode右边的工具栏中图二(Target Membership)所示选项都是选中的
图二
所有选中这个选项的文件都会显示在图三所示的位置
图三
显示在图三所示位置的文件在编译时都会参与编译打包到最终的.App文件中。如果某个文件的Target Membership没有选中,则在编译时如果代码中引用了该文件,则会提示报错找不到对应文件。
Tips:
- 对于info.plist文件,系统会自动检索info关键字,在编译的时候会自动打包带有info关键字的文件。所以对于info.plsit文件不需要选中Target Membership,如果选中,会提示
Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'FM/Info.plist'.
网友评论