[[UIScreen mainScreen] bounds]和 applicationFrame

转载 2015年07月08日 22:58:07
 一直对ios设备的尺寸不大敏感,搞不清[[UIScreen mainScreen] bounds] 和[UIScreen mainScreen] applicationFrame]的区别,故总是心虚,现扫盲下:

定义一个宏:

1
#define PrintRect(frame) NSLog(@"X:%f,Y:%f,W:%f,H:%f",frame.origin.x,frame.origin.y,frame.size.width,frame.size.height)

测试调用:

1
2
3
4
5
NSLog(@"[[UIScreen mainScreen] bounds]");
 PrintRect([[UIScreen mainScreen] bounds]);
     
 NSLog(@"[[UIScreen mainScreen] applicationFrame]");
 PrintRect([[UIScreen mainScreen]applicationFrame]);

测试结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//Ipad4 retain:
2013-07-17 10:08:39.094 IpadSize[191:907] [[UIScreen mainScreen] bounds]
2013-07-17 10:08:39.097 IpadSize[191:907] X:0.000000,Y:0.000000,W:768.000000,H:1024.000000
 
2013-07-17 10:08:39.098 IpadSize[191:907] [[UIScreen mainScreen] applicationFrame]
2013-07-17 10:08:39.099 IpadSize[191:907] X:0.000000,Y:20.000000,W:768.000000,H:1004.000000
 
//ipad normal:
2013-07-17 10:19:09.886 IpadSize[1223:11303] [[UIScreen mainScreen] bounds]
2013-07-17 10:19:09.887 IpadSize[1223:11303] X:0.000000,Y:0.000000,W:768.000000,H:1024.000000
2013-07-17 10:19:09.887 IpadSize[1223:11303] [[UIScreen mainScreen] applicationFrame]
2013-07-17 10:19:09.888 IpadSize[1223:11303] X:0.000000,Y:20.000000,W:768.000000,H:1004.000000
 
//iphone:
2013-07-17 10:15:39.372 IpadSize[1005:11303] [[UIScreen mainScreen] bounds]
2013-07-17 10:15:39.373 IpadSize[1005:11303] X:0.000000,Y:0.000000,W:320.000000,H:480.000000
2013-07-17 10:15:39.374 IpadSize[1005:11303] [[UIScreen mainScreen] applicationFrame]
2013-07-17 10:15:39.374 IpadSize[1005:11303] X:0.000000,Y:20.000000,W:320.000000,H:460.000000
 
 
 
//iphone 3.5 retain:
2013-07-17 10:16:34.145 IpadSize[1043:11303] [[UIScreen mainScreen] bounds]
2013-07-17 10:16:34.146 IpadSize[1043:11303] X:0.000000,Y:0.000000,W:320.000000,H:480.000000
2013-07-17 10:16:34.147 IpadSize[1043:11303] [[UIScreen mainScreen] applicationFrame]
2013-07-17 10:16:34.147 IpadSize[1043:11303] X:0.000000,Y:20.000000,W:320.000000,H:460.000000
 
//iphone 4 retain:
2013-07-17 10:17:26.562 IpadSize[1083:11303] [[UIScreen mainScreen] bounds]
2013-07-17 10:17:26.563 IpadSize[1083:11303] X:0.000000,Y:0.000000,W:320.000000,H:568.000000
2013-07-17 10:17:26.564 IpadSize[1083:11303] [[UIScreen mainScreen] applicationFrame]
2013-07-17 10:17:26.564 IpadSize[1083:11303] X:0.000000,Y:20.000000,W:320.000000,H:548.000000
 
//IPHONE 6 Plus:
2015-01-09 19:59:57.905 TripPlusMeIphone[1183:230595] [[UIScreen mainScreen] bounds]
2015-01-09 19:59:57.905 TripPlusMeIphone[1183:230595] X:0.000000,Y:0.000000,W:414.000000,H:736.000000
2015-01-09 19:59:57.905 TripPlusMeIphone[1183:230595] [[UIScreen mainScreen] applicationFrame]
2015-01-09 19:59:57.905 TripPlusMeIphone[1183:230595] X:0.000000,Y:0.000000,W:414.000000,H:736.000000
 
//iphone 6
2015-01-09 20:02:32.910 TripPlusMeIphone[87512:1855595] [[UIScreen mainScreen] bounds]
2015-01-09 20:02:32.911 TripPlusMeIphone[87512:1855595] X:0.000000,Y:0.000000,W:375.000000,H:667.000000
2015-01-09 20:02:32.911 TripPlusMeIphone[87512:1855595] [[UIScreen mainScreen] applicationFrame]
2015-01-09 20:02:32.911 TripPlusMeIphone[87512:1855595] X:0.000000,Y:0.000000,W:375.000000,H:667.000000

从日志输出可以看到,bounds就是屏幕的全部区域,applicationFrame就是app显示的区域,不包含状态栏(高度20,如果状态栏隐藏的话,那么,这个结果就和bounds一样了)

另外:self.view.frame是读取view属性的frame属性。即xib中view的frame。

UIWindow使用介绍

我们在平时的开发过程中,也许忽略了UIWindow。因为系统已经帮我们处理了它的相关操作。比如在程序启动过程中。调用makeKeyAndVisible方法,使整个程序界面可见。 - (BOOL)ap...
  • sinat_27706697
  • sinat_27706697
  • 2015年05月17日 08:05
  • 2191

iOS8中的UIScreen、UIWindow、键盘尺寸、状态栏尺寸的改动

1.首先,在iOS8之前的[UIScreen mainScreen].bounds 和 [UIScreen mainScreen].applicationFrame 两者的区别在于: 1)[UISc...
  • xxq_2011
  • xxq_2011
  • 2014年10月19日 23:24
  • 4089

UIScreen(屏幕)、UIWindow(画框)、UIView(画布)、didFinishLaunchingWithOptions、UIViewController各个方法的加载顺序

//didFinishLaunchingWithOptions 方法:顾名思义。在app开始运行时会调用里面的方法。 - (BOOL)application:(UIApplication *...
  • heng615975867
  • heng615975867
  • 2014年09月04日 15:50
  • 6953

[[UIScreen mainScreen] bounds]和 applicationFrame

[[UIScreen mainScreen] bounds]和 applicationFrame 发表于2年前(2013-07-17 10:33)   阅读(14979) | 评论(6) 9人收...
  • Lu_Ca
  • Lu_Ca
  • 2015年12月30日 09:42
  • 469

1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].application

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVer...
  • vs_the_old_boy
  • vs_the_old_boy
  • 2015年12月24日 00:41
  • 135

关于self.view以及applicationFrame之类屏幕高度的一点总结

今天搭一个小项目框架的时候遇到了一个bug,屏幕下面的tabBar只显示了一小条,打印了一下位置发现不对,我就找原因, 因为项目中很多地方用到self.view.frame.size.hei...
  • zyzxrj
  • zyzxrj
  • 2015年01月07日 20:19
  • 817

Bounds Checker 6.01 for VC

  • 2007年10月17日 12:59
  • 4MB
  • 下载

iOS8中的UIScreen、UIWindow、键盘尺寸、状态栏尺寸的改动

1.首先,在iOS8之前的[UIScreen mainScreen].bounds 和 [UIScreen mainScreen].applicationFrame 两者的区别在于: 1)[UISc...
  • xxq_2011
  • xxq_2011
  • 2014年10月19日 23:24
  • 4089

UIScreen详解:定时器,快照,亮度,尺寸等实现方法

UIScreen对象定义一些与硬件显示相关的属性。iOS设备有主屏幕或0到多个附加屏幕。 iOS8新增加了API定义竖屏和任意屏幕的CoordinateSpace方法,更加灵活。 获得屏幕 //...
  • lcl130
  • lcl130
  • 2014年12月24日 22:36
  • 1225

【iOS】UIScreen && UIDevice学习记录

A UIScreen object contains the bounding rectangle of the device’s entire screen. When setting up yo...
  • HardworkingBee
  • HardworkingBee
  • 2015年05月11日 17:27
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[[UIScreen mainScreen] bounds]和 applicationFrame
举报原因:
原因补充:

(最多只允许输入30个字)