【问题标题】:How to get real frame size of detailed view when using UISplitViewController使用 UISplitViewController 时如何获取详细视图的实际帧大小
【发布时间】:2011-09-02 10:41:16
【问题描述】:

我对这个有点困惑。

我正在尝试以编程方式调整一些 UI 元素的大小...

元素的大小取决于父视图(此处为详细视图)的大小。 (我不想使用 autosize-mask,只是因为我无法得到我想要的结果)

在横向模式下运行时,在UIViewDidAppear 中读取我当前视图的帧大小,我得到的大小始终是 1024 像素宽,这显然不会在所有内容都显示后出现(它将是 1024 减去根控制器的宽度(320 像素)= 704 像素宽)

我应该在什么时间,在哪里重新调整视图大小,以便我可以准确地读取帧大小。

显然我想在视图生命周期中尽早执行此操作,并且尽可能在绘制任何内容之前执行此操作,这样用户就不会看到我正在调整对象的大小。

理想情况下,我想知道是否有一个特定的函数被调用(类似于UIViewWillAppear),我可以将我的代码放入其中。

谢谢

【问题讨论】:

  • 我知道为什么我没有在预期的时候被调用。我将 UISplitViewController 与 UITabBarController 结合使用。

标签: ios ipad uisplitviewcontroller frame


【解决方案1】:

您正在寻找- (void)layoutSubViews 看到这个问题:When is layoutSubviews called?

【讨论】:

    【解决方案2】:

    通常,从调用 UIViewDidAppear 开始,所有内容都已调整为正常大小。 但是,当您使用从 UITabBarController 启动的 UISplitViewController 时,消息 UIViewDidAppear 不会按预期调用。

    iOS 4 及更早版本不支持这种情况。 Apple 的 UI 指南要求每个屏幕只有一个 UIView 控制器(UISplitViewController 和 UITabBarController 除外)。 貌似从iOS 5开始,会支持这种情况。

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 2013-02-24
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多