【问题标题】:view size on iphone 5 screen incorrectiphone 5 屏幕上的视图大小不正确
【发布时间】:2012-09-28 09:01:03
【问题描述】:

我在我的应用程序中使用视图大小来定位代码中的子视图。

例如这样:

self.view.bounds.size.height

这个子视图必须在视图内外进行动画处理。

这在旧设备上运行完美,现在我尝试支持 iphone 5,发现我仍然获得旧设备的高度。 除了这个动画视图之外的所有内容都非常适合 iphone 5。

获得正确大小的唯一方法是如果我在 xib 中更改视图的大小,缺点是 如果我现在在 iPhone 4 上运行我的应用程序,则视图大小为 4 英寸视图大小。

这里有什么问题? 或者这是应该的方式,我必须为 iPhone 5 创建一个额外的 xib 文件?

【问题讨论】:

    标签: iphone view size ios6 iphone-5


    【解决方案1】:

    好的,答案如下:

    就像@mrwalker 所说,确保视图自动或以编程方式调整大小。

    请注意,视图尚未在 viedDidLoad 方法中调整大小。 (这是我的错误)

    如果您需要调整大小的视图大小,请在 viewWillAppear 中执行您的操作,该视图的大小已经正确。

    感谢@mrwalker 和@AndyDev

    【讨论】:

      【解决方案2】:

      您需要确保根据运行它的设备调整视图的大小。你可以:

      1. 为 iPhone 5 创建一个新的 Xib,就像为 iPad 一样
      2. 自动或以编程方式调整现有 Xib 的大小

      如果您打算使用不同的布局(更多/更少按钮等),我只会选择 (1)。

      如何实现 (2) 取决于您使用的是 iOS 6 的自动布局还是旧的自动调整大小模型。这两种方法都可以在 Xcode 中的 Utilities > Size Inspector 中进行控制,也可以通过编程方式进行控制。

      如果您只有一个视图和视图控制器,允许视图自动调整到父窗口的大小就足够了。

      【讨论】:

      • 这听起来很合理。我必须支持旧版本,那我该怎么做?我已经在 IB 中设置了支柱和弹簧以允许调整大小。
      • 如果您需要支持旧版本,请坚持使用 springs & struts(旧的调整大小模型)。您的视图窗口大小是否正确?也许您需要确保视图的框架与超级视图(或窗口)的边界相匹配?
      • 父级是我的应用程序委托,我将我的 VC 设置为 rootviewcontroller。代表的窗口显然是正确的大小,但我的 VC 视图没有正确调整大小。为什么?以及如何以及在哪里将 VC 视图设置/检查到超级视图/委托的窗口框架?
      • 我想我现在需要看一些代码。我猜你需要self.viewController.view.frame = self.window.bounds;self.window.rootViewController = self.viewController; 之前。
      • 我只是打开了一个新项目(单一视图应用程序),这就是我使用的代码。我试过你的代码,没有任何效果;(
      【解决方案3】:

      我遇到了类似的问题,我没有得到正确的高度,并且使用 Autolayout / autoresize 没有达到预期的效果。我使用下面的代码来确定屏幕大小并在此基础上进行更改。

      if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
          CGSize result = [[UIScreen mainScreen] bounds].size;
          CGFloat scale = [UIScreen mainScreen].scale;
          result = CGSizeMake(result.width * scale, result.height * scale);
          if(result.height == 1136){
              // iPhone 5 (1136px height)
          } else {
              // Not iPhone 5
          }
      }
      

      【讨论】:

      • 这段代码对于我们的一些案例来说很棒,我会记住这段代码,但它并不能完全解决我的问题。感谢分享
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多