Iphone:获取当前视图尺寸或屏幕尺寸

Iphone:获取当前视图尺寸或屏幕尺寸,iphone,objective-c,screen,dimensions,Iphone,Objective C,Screen,Dimensions,您好,我想获取主视图的宽度和高度。我想要在横向或纵向模式下的正确值。我尝试了以下方法: NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width); NSLog(@"zzz %f", self.view.frame.size.width); 在横向模式下有300个,纵向模式下有320个,是的,纵向模式下更大。所以我的视图占据了整个屏幕(-status bar),所以我希望在横向模式下有480个视图,在纵向模式

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


  NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width);
  NSLog(@"zzz %f", self.view.frame.size.width);
在横向模式下有300个,纵向模式下有320个,是的,纵向模式下更大。所以我的视图占据了整个屏幕(-status bar),所以我希望在横向模式下有480个视图,在纵向模式下有320个视图。其余像素发生了什么。我必须硬编码这些值吗?谢谢。

试试这个:

UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);

以下哪一行适合你

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

我想你可以减去状态栏的高度?可能我不理解您的问题

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

#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)

这是可行的,它为两个方向返回相同的宽度和高度,但至少是可行的。是的,我需要删除状态栏。@Omar您需要在UIScreen之前添加一个额外的
[
。从iOS8[UIScreen mainScreen]开始。bounds是面向界面的(查看WWDC 2014的“查看iOS 8中的控制器改进”会话),这意味着在iOS8的横向模式下,高度和宽度是相反的。@Andr3a88,感谢您提供的额外信息。这意味着原始答案比以前更令人满意。