【问题标题】:viewWillLayoutSubviews is getting called way too muchviewWillLayoutSubviews 被调用太多了
【发布时间】:2012-09-07 06:47:51
【问题描述】:

在我的viewController.view 中,我在viewWillLayoutSubviews 中完成了一些工作,这些工作组织了哪些子视图是可见的,哪些子视图要放在前面,哪些要隐藏,等等,如果方向发生变化。

但我的视图中有一些按钮以某种方式导致每次按下它们时都会调用viewWillLayoutSubviews。为什么会这样?根据 Apple 文档,viewWillLayoutSubviews 只有在您的视图边界发生变化时才会被调用。

结果是我的视图只是通过按下按钮重新排列,但我根本没有旋转设备,也没有以任何方式操纵 view.bounds 或 view.frame。

【问题讨论】:

  • 你能说出你在按下按钮时正在执行什么操作吗??
  • 是的,按下按钮会创建一个子视图并将其添加到视图中。
  • 肯定是因为在按下按钮时添加了子视图。
  • 这是有道理的,因为添加了子视图,它会再次尝试布局子视图。
  • 你最好做一件事,andrews 取一个布尔值并在按钮按下时将其设置为 TRUE,并在 layoutSubviews 上检查它并操作它是真还是假。你明白我想要做什么。

标签: iphone objective-c ios ipad uikit


【解决方案1】:

你最好做一件事,andrews 取一个布尔值并在按钮按下时将其设置为 TRUE,并在 layoutSubviews 上检查它并操作它是真还是假。你明白我想要做什么。

【讨论】:

  • 我也接受了您在上面的问题中留下的 cmets
  • 那么最后你用什么解决方案来解决这个问题?
【解决方案2】:

很奇怪,我写了一个演示,只有2个方法,一个用于按钮的操作,一个是- (void)viewWillLayoutSubviews,当我按下按钮时,- (void)viewWillLayoutSubviews没有被调用。也许你的代码有错误?

【讨论】:

  • 请注意我的问题的 cmets,看起来好像找到了罪魁祸首
猜你喜欢
  • 2014-11-02
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2012-02-27
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
相关资源
最近更新 更多