【问题标题】:Iphone: Get current view dimensions or screen dimensionsIphone:获取当前视图尺寸或屏幕尺寸
【发布时间】: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。其余像素发生了什么变化。我必须对这些值进行硬编码吗?谢谢。

【问题讨论】:

    标签: iphone objective-c screen dimensions


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 2012-04-10
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        相关资源
        最近更新 更多