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

gyo*_*dor 34 iphone screen objective-c dimensions

您好我想获得主视图的宽度和高度.我想在横向或纵向模式下使用正确的值.我尝试过以下方法:


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

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

小智 102

以下任何一行都适合您吗?

[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
Run Code Online (Sandbox Code Playgroud)

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

  • 从iOS8 [UIScreen mainScreen] .bounds是面向接口的(参见WWDC 2014的会议"iOS 8中的View Controller Advancements"),这意味着在iOS8的横向模式中,高度和宽度都是相反的. (2认同)

jit*_*roy 9

试试这个 :

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


sas*_*ash 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)
Run Code Online (Sandbox Code Playgroud)