对于具有自动布局的NIB子视图的UIView,不调用layoutSubviews

时间:2013-08-03 06:08:56

标签: iphone layout ios6 uiview nib

我使用的是iOS 6.我创建了一个自定义的子类UIView,它具有我自己的覆盖layoutSubviews方法描述的布局逻辑。我希望同时支持纵向和横向模式,因此调用layoutSubviews对我来说至关重要。我在layoutSubviews内以编程方式重新排列子视图并调整其大小,而不使用任何约束。

如果我使用简单控件或UIViews作为子视图添加到我的自定义子类中,一切正常。但是,如果我添加至少一个具有某些约束的自动布局的基于NIB的子视图,则在我的子类中永远不会调用layoutSubviews,因此我无法更新布局。

这可能是非常简单的事情,但我在这里找不到解决方案,因为我是iOS的新手无法自己解决。请帮忙。

2 个答案:

答案 0 :(得分:4)

问题似乎比我预期的要深刻得多。我花了两天的时间通过混合自动布局和自动调整布局方法来调试和阅读所有这些内容,最终我认为将一些视图与自动布局相结合并使用程序布局来获得一些中间视图真的很难。

我通过在超级layoutSubviews方法中手动调用Frame并设置我自定义子类UIView的layoutSubviews暂时解决了上述问题。

答案 1 :(得分:2)

是的,我认为你有同样的问题,layoutSubviews没有被完全调用。请查看以下链接,并查看: -

When is layoutSubviews called?

UIView layoutSubviews not being called

"Auto Layout still required after executing -layoutSubviews" with UITableViewCell subclass

这些问题与您的问题类似。希望他们能帮忙。