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:获取当前视图尺寸或屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章