【问题标题】:The bounds of UIScrollView in viewDidLoad are not same size as set in IBviewDidLoad 中 UIScrollView 的边界与 IB 中设置的大小不同
【发布时间】:2013-06-11 04:19:47
【问题描述】:

我在情节提要中有一个 UIScrollView,它的高度设置为 548 或 460,具体取决于设备,即屏幕的完整尺寸,不包括状态栏(参见屏幕截图)。

但是,当我运行代码并检查其边界时,viewDidLoad 中的大小为 568 或 480:

CGRect frame = self.slideshowScrollView.bounds; 
// frame.origin.y gets set to 480 or 568 not 460 or 548.

为什么边界包括状态栏的大小,而 IB 没有?

(UIScrollView 在 UIView 中,IB 中的大小也是 548 或 460,在 viewDidLoad 中也显示为 480 或 568)。

【问题讨论】:

  • 什么是视图?视图是否属于刚刚显示的视图控制器?视图框架也会改变吗?
  • 视图归第一个屏幕截图所示的视图控制器所有,UIScrollView 在视图内。 VC 刚刚加载,如前所述,我在其 viewDidLoad: 中显示了代码 sn-p。视图的边界也是 480 或 568,但在 IB 内,它的高度设置为 548 或 460,与 UIScrollView 相同。
  • 首先,您在 IB 中使用自动布局吗?

标签: ios


【解决方案1】:

在 IB 中设置了视图控制器的想要全屏屏幕属性,这是问题的原因。

【讨论】:

    【解决方案2】:

    在调用 viewDidLoad 时,您不应该依赖正确设置帧大小,无论是为主视图还是它的子视图。相反,您可能会考虑 viewWillAppear。如果您在 viewWillAppear 中检查大小是否正确?

    【讨论】:

    • 在 viewWillAppear 中的结果相同
    【解决方案3】:

    检查UIView 属性集Statusbar 属性为default 或您想要的。它会解决你的问题。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2011-10-29
      相关资源
      最近更新 更多