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

Posted

技术标签:

【中文标题】Iphone:获取当前视图尺寸或屏幕尺寸【英文标题】:Iphone: Get current view dimensions or screen dimensions 【发布时间】:2011-06-04 14:20:56 【问题描述】:

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


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

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

【问题讨论】:

【参考方案1】:

以下哪一行对你有用吗?

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

我想你可以减去状态栏的高度?可能我没看懂你的问题

【讨论】:

这工作它为两个方向返回相同的宽度和高度,但至少它工作。是的,我需要减去状态栏。 @Omar 你需要一个额外的[ 在 UIScreen 之前。 From ios8 [UIScreen mainScreen].bounds 是面向界面的(查看 WWDC 2014 的会话“View Controller Advancements in iOS 8”),这意味着在 iOS8 的横向模式下,高度和宽度是相反的. @Andr3a88,感谢您提供的额外信息。这意味着原来的答案比以前更令人满意。【参考方案2】:

试试这个:

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

【讨论】:

【参考方案3】:

根据设备方向为您提供正确尺寸的有用宏:

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

【讨论】:

以上是关于Iphone:获取当前视图尺寸或屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章

如何根据不同的屏幕尺寸测量和布局视图

如何调整标签大小以适应任何屏幕尺寸

处理屏幕尺寸的正确方法

获取 iPhone 的物理屏幕尺寸(以英寸为单位)

iPhone 6 plus 的屏幕尺寸问题

使用 AutoLayout 为所有 Iphone 屏幕尺寸调整 Elements 的 Y 位置