34

您好,我想获取主视图的宽度和高度。我想要横向或纵向模式下的正确值。我尝试了以下方法:


  NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width);
  NSLog(@"zzz %f", self.view.frame.size.width);

这些在横向模式下提供 300,在纵向模式下提供 320,是的,在纵向模式下更大。所以.. 我的视图占据了整个屏幕(-状态栏),所以我希望横向模式下为 480,纵向模式下为 320。其余像素发生了什么变化。我必须对这些值进行硬编码吗?谢谢。

4

3 回答 3

104

以下任何一行对您有用吗?

[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width

我想你可以减去状态栏的高度?也许我不明白你的问题

于 2011-01-06T12:38:42.437 回答
10

尝试这个 :

UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);
于 2011-01-06T11:27:59.873 回答
6

有用的宏将根据设备方向为您提供正确的大小:

#define SCREEN_WIDTH ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height)
#define SCREEN_HEIGHT ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width)
于 2014-09-25T13:58:24.840 回答