【问题标题】:When do autoresizing masks take effect in iOS?自动调整大小蒙版在 iOS 中何时生效?
【发布时间】:2011-04-21 05:26:38
【问题描述】:

我有一个笔尖,它最初是为一个尺寸为 320x480 的 iPhone 应用程序创建的,并设置了自动调整大小的蒙版,以便在其超级视图很大时向各个方向扩展视图。

我现在正在使我的应用程序通用化,并且正在使用相同的 nib 并将其显示在 iPad 上的页面表中。

我的问题是我根据帧大小进行了一些计算,但仍然显示为 320x480。但在其他方法中,框架大小正确显示为页面大小。

问题:自动调整大小蒙版何时生效,以便我可以在正确的时间进行计算?

【问题讨论】:

    标签: iphone ios ipad autoresizingmask


    【解决方案1】:

    autoresizingMask 属性在其父视图的框架发生变化时生效。 superview 属性resizesSubviews 必须为YES。当您加载您的 NIB 时,superview 的框架设置为在 NIB 中。您可以在初始化时将其设置为您想要的任何值。

    【讨论】:

    • 我在模态页面控制表中展示了这个视图控制器的视图。在 some 点,自动调整大小的蒙版生效,我在视觉上看到了这一点。但在 viewDidLoad 我没有看到那些反映的变化。也许如果我在 viewDidAppear 而不是 viewDidLoad 中进行这些初始计算,它可能会成功?
    • 尝试覆盖layoutSubviewsviewDidLoad 只加载子视图,不做布局。
    • 似乎更改在 viewDidLoad 执行后的下一个运行循环中或附近生效。不确定具体细节,但我从 viewDidload 中提取了布局内容,将其放入自己的方法中,现在可以从任意数量的地方调用它,包括 layoutSubviews 或 viewWillAppear。谢谢!
    • 确定。你真的只需要担心layoutSubviews 中的布局。如果您需要随时强制布局调用[view setNeedsLayout]
    【解决方案2】:

    我已经很久没有为 iOS 做一些开发工作了,但我记得当设备的旋转发生变化时旋转视图很重要。因此,当您设置一个启用所有设备方向的视图控制器时,它将设置其视图的框架。该视图将依次设置所有子视图的框架。它将查看自动调整大小的蒙版以检查它如何改变框架。

    对此我不确定,但我认为是这样的。测试一下,让我们知道!

    ief2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多