ios中经常会用[UIScreen mainScreen].bounds 来获取屏幕的frame,但最近网上下载了个项目,在模拟器运行起来,打印[UIScreen mainScreen].bounds 发现不管是在iphone4,iphone5,iphone6s上,其值始终是568*320,对此感觉到甚是奇怪。

  大家都知道iphone4的frame为480*320,iphone5/5s位568*320,iphone6/6s位667*350。其实在项目中,如果你将启动图片(xcode9.0中的Launch Screen File)设置成某个storyboard,那么获取到的bounds则为相应的模拟器frame。但是你如果将其设置为空,xcode会在项目中查找其他与启动图片有关的信息(LauchImage或者其他方式指定),根据该图片的大小,生成bounds。该bounds不会随着模拟器的改变而改变,只与该启动图片有关。ios在不同的设备上会按照bounds的宽高比例来缩放界面,不会造成变形。