容器视图控制器中的自定义topLayoutGuide长度

Acc*_*yyc 16 uiviewcontroller ios autolayout ios7

比方说,我已经制作了一个类似于a的自定义容器视图控制器UINavigationController,但它顶部有2个导航栏.

然后,在子视图控制器中我使用autolayout,我当然希望内容从第二个导航栏下面开始.

为了自动实现这一点,我需要将顶部布局指南设置为两个导航栏组合的高度.

我假设我们可以覆盖topLayoutGuide-property,但无论我做什么,topLayoutGuide函数永远不会在我的自定义容器视图控制器或子视图控制器中调用.

所以这意味着它topLayoutGuide基本上是一个毫无价值的财产,仅与Apple自己的容器视图控制器一起工作?

请告诉我,我错了!

pet*_*are 6

阅读关于此的文档,topLayoutGuide属性是(readonly),它的长度属性也是(readonly).除此之外,它还指出:

容器视图控制器中的视图控制器不会设置此属性的值.相反,容器视图控制器约束值以指示:

  • 如果导航栏可见,则导航栏的底部
  • 如果只显示状态栏,则状态栏的底部
  • 如果状态栏和导航栏都不可见,则视图控制器视图的上边缘

这三种情况对我来说意味着它可能无法定制,尽管我很想被证明是错误的.看起来像这个功能的一个很好的用例.

  • 是的,奇怪的是,覆盖子类中的readonly属性是有意义的.在运行时发生了一些可疑的事情,因为被覆盖的方法甚至不会被调用... (2认同)