ios 7 Launch Images改变屏幕尺寸

前几天移动了一下Launch Images的文件位置,导致了在iPhone5上用

[[UIScreen mainScreen] bounds]

获取屏幕尺寸时,得到的结果是320*480,而不是屏幕实际的尺寸320*568,经过一番研究之后发现,Launch Image的大小可能导致用这种方法获得的屏幕尺寸不准确。

给App添加Launch Image时,需要先把图片加到工程中,在Project Navigator里的工程文件上右键->Add Files to “XXX”,选择要添加的图片即可,添加的图片会出现在工程文件下面和工程文件里的Build Phases->Copy Bundle Resources(后文简称Resources)列表里,图片文件必须在Resources的顶层目录里,不然可能找不到(原文链接),图片必须是非交错的PNG格式(原文链接)。

如果Launch Image的文件名是默认文件名”Default”的话,Target的设置可以自动识别出来

可以在didFinishLaunchingWithOptions里打印出Screen的尺寸

此时,如果运行在3.5英寸的设备上,将会显示640*960的Launch Image,打印屏幕尺寸为320,480,如果运行在4英寸的设备上,将会显示640*1136的Launch Image,打印出320,568。

创建使用默认名称的Launch Image,需要把文件名命名为Default@2x.png和Default-568h@2x.png,尺寸必须为640*960和640*1136,必须加到Build Phases的Resources里,三条缺一不可,Launch Image才会自动对应到Target的设置里,否则可能无法正常显示。

根据官方文档(原文链接),系统会寻找包含”-568h”的Launch Image,如果找到了,系统会认为该App支持4英寸屏幕的设备,于是让App在全屏模式下运行,如果找不到,App在4英寸的设备上运行时,系统会在屏幕上下加上黑条,App会在640*960的模式下运行,即便是4英寸的设备,打印出的屏幕尺寸还是320*480。

此时如果Resources里没有添加带”-568h”的Launch Image,就会导致这个问题。当把Resource里的资源删除时,虽然资源仍然还在Project Navigator里,但该资源是不会被拷贝到生成的安装包的,因此仍然会导致这个问题。

XCode会对设置的Launch Image图片的实际尺寸进行检查,如果实际文件的尺寸不是640*960或640*1136的话,在Targets设置里会提示”No image with correct dimensions found”,运行时会把图片拉伸到对应的尺寸。

总结一下所有现象,在4英寸设备上,如果有”-568h”的Launch Image,会全屏显示,打印屏幕尺寸为320*568,如果只有640*960的Launch Image,屏幕上下会出现黑边,打印屏幕尺寸为320,480,没有合法Launch Image时,启动画面是黑色,在3.5英寸设备上,”-568h”的Launch Image并不会被”压扁”显示,所以不用考虑,如果有640*960的Launch Image,会全屏显示,打印屏幕尺寸为320,480,否则启动画面是黑色。

如果想自定义LaunchImage的名称的话,可以通过Target设置来制定,点击Launch Images选项里的文件夹图标,可以选择已经添加到工程的图片,如果图片没有添加到工程,可以选”Add Other”,之后切记要把图片加到Resources里。选择的图片名称所表示的尺寸必须和选项里的Dimensions对应,不然可能仍然显示”No image specified”。

添加完自定义的Launch Image之后,XXX-Info.plist文件里会多出一项”UILaunchImages”,值类型为数组,如果之前没有按照要求选择图片的话,选择的历史记录也会堆积在数组里,可以在此去掉不需要的Item。

Item里的UILaunchImageName表示该Item对应的图片名称,UILaunchImageSize表示该Item指定的图片对应到哪个尺寸的屏幕上,而不是图片本身的尺寸,目前只有两种尺寸:”320,480″和”320,568″,如果强制改成其他尺寸,会被系统识别为”320,480″,不管能不能找到图片文件,都显示黑屏。

在4英寸的设备上,系统会优先选择”320,568″尺寸的Item,根据指定的文件名查找”-568h@2x”的图片,如果找不到,会显示黑屏,如果有一张”@2x”的图片,且分辨率是640*960,或者该图片被故意命名成”-568h@2x”,图片会被拉长显示,如有有张640*1136的图片,被故意命名成”@2x”,图片仍然会全屏显示,如果两种故意弄错命名的图片同时存在,系统选择了640*960的图片并拉长显示,打印出的屏幕尺寸都是”320,568″。

如果没有”320,568″尺寸的Item,系统会默认为是”320*480″,并寻找”@2x”的图片,如果找不到,会显示黑屏,如果有一张”-568h@2x”,且分辨率是640*1136的图片,或该图片被故意命名成”@2x”,仍然会全屏显示出来,如果有一张640*960的图片,被故意命名成”-568h@2x”,图片上下会有黑边,如果两种故意弄错命名的图片同时存在,系统选择了640*960的图片显示,上下会有黑边,无法判断系统是根据什么优先级选择的,打印出的屏幕尺寸都是”320,480″,App运行起来后屏幕上下仍然会有黑边。

在3.5英寸的设备上,Item只有”320,480″一种尺寸选择,系统会查找”@2x”的图片,如果找不到,会显示黑屏,如果有一张分辨率为640*1136的图片,且故意命名成”@2x”,图片会被压扁显示,如果有一张分辨率为640*960的图片,且故意命名成”-568h@2x”,会显示黑屏,如果两种故意弄错命名的图片同时存在,系统选择了640*1136的图片显示,而且被压扁了,无法理解系统为何这样选择,打印出的屏幕尺寸都是”320,480″。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值