是否可以在UIViewController的子条款中实现topLayoutGuide和bottomLayoutGuide?

时间:2013-10-16 19:05:49

标签: uiviewcontroller ios7 autolayout

我一直在尝试创建一个容器视图控制器,它为iOS 7中的视图控制器提供了一些像UINavigationController和UITabBarController这样的重叠视图。为了使包含的视图布局正确,我尝试了几乎所有我能想到的内容关于在容器和包含的视图控制器中实现-bottomLayoutGuide,但没有运气。调用该方法,但似乎没有使用该值。

我在https://github.com/stefanfisk/custom-layout-guides汇总了一个快速示例,但在那里我甚至无法调用访问器。

1 个答案:

答案 0 :(得分:2)

我发现在代码中设置约束时,例如

[self.view addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"V:[topLayoutGuide][mainView]"
                           options:0
                           metrics:nil
                           views:@{@"topLayoutGuide" : self.topLayoutGuide, @"mainView" : self.mainView}]];
它崩溃了:

2013-10-16 22:23:27.119 Custom Layout Guides[46840:a0b] -[LayoutGuide superview]: unrecognized selector sent to instance 0x8c80c80
2013-10-16 22:23:27.124 Custom Layout Guides[46840:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LayoutGuide superview]: unrecognized selector sent to instance 0x8c80c80'

自动布局试图在布局指南上调用superview,这很奇怪,因为它应该只符合UILayoutSupport协议。

我也注意到topLayoutGuide& bottomLayoutGuide被声明为readonly

@property(nonatomic, readonly, retain) id<UILayoutSupport> topLayoutGuide
@property(nonatomic, readonly, retain) id<UILayoutSupport> bottomLayoutGuide