0

我正在使用带有左侧和右侧菜单的 ECSlidingViewController。

试图让 iAds 显示在整个应用程序的底部。我的 StoryBoard 入口点是一个 ViewController,它是一个 ECSlidingViewController 子类。

故事板与我的所有其他代码一起设置为 AutoLayout。

当我添加self.canDisplayBannerAds = YES;到 viewWillAppear 中时,构建失败:

    View hierarchy unprepared for constraint.
    Constraint: <NSAutoresizingMaskLayoutConstraint:0xb2a9030 h=--- v=--- UIView:0xa499b70.midX == UIView:0xa4a95f0.midX>
    Container hierarchy: 
<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>
    View not found in container hierarchy: <UIView: 0xa499b70; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0xa499380>>
    That view's superview: <UIWindow: 0xb263e30; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0xb264f30>; layer = <UIWindowLayer: 0xb264080>>
2014-01-06 20:22:15.772 AppTest[10851:a0b] View hierarchy unprepared for constraint.
    Constraint: <NSAutoresizingMaskLayoutConstraint:0xb2a9180 h=--- v=--- UIView:0xa499b70.width == UIView:0xa4a95f0.width>
    Container hierarchy: 
<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>
    View not found in container hierarchy: <UIView: 0xa499b70; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0xa499380>>
    That view's superview: <UIWindow: 0xb263e30; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0xb264f30>; layer = <UIWindowLayer: 0xb264080>>
2014-01-06 20:22:15.772 AppTest[10851:a0b] View hierarchy unprepared for constraint.
    Constraint: <NSAutoresizingMaskLayoutConstraint:0xb2a92b0 h=--- v=--- UIView:0xa499b70.midY == UIView:0xa4a95f0.midY>
    Container hierarchy: 
<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>
    View not found in container hierarchy: <UIView: 0xa499b70; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0xa499380>>
    That view's superview: <UIWindow: 0xb263e30; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0xb264f30>; layer = <UIWindowLayer: 0xb264080>>
2014-01-06 20:22:15.815 AppTest[10851:a0b] View hierarchy unprepared for constraint.
    Constraint: <NSAutoresizingMaskLayoutConstraint:0xb2a92e0 h=--- v=--- UIView:0xa499b70.height == UIView:0xa4a95f0.height>
    Container hierarchy: 
<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>
    View not found in container hierarchy: <UIView: 0xa499b70; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0xa499380>>
    That view's superview: <UIWindow: 0xb263e30; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0xb264f30>; layer = <UIWindowLayer: 0xb264080>>
2014-01-06 20:22:15.815 AppTest[10851:a0b] View hierarchy unprepared for constraint.
    Constraint: <NSAutoresizingMaskLayoutConstraint:0xb2a9030 h=--- v=--- UIView:0xa499b70.midX == UIView:0xa4a95f0.midX>
    Container hierarchy: 
<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>
    View not found in container hierarchy: <UIView: 0xa499b70; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0xa499380>>
    That view's superview: <UIWindow: 0xb263e30; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0xb264f30>; layer = <UIWindowLayer: 0xb264080>>
2014-01-06 20:22:15.838 AppTest[10851:a0b] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to install constraint on view.  Does the constraint reference something from outside the subtree of the view?  That's illegal. constraint:<NSAutoresizingMaskLayoutConstraint:0xb2a9030 h=--- v=--- UIView:0xa499b70.midX == UIView:0xa4a95f0.midX> view:<UIView: 0xa4a95f0; frame = (0 0; 768 1024); layer = <CALayer: 0xa4a84d0>>'

看起来我需要在某处添加一个约束,因为显示 iAd 时高度会改变。

4

2 回答 2

1

首先,canDisplayBannerAds在视图显示之前设置(即视图加载时)。

其次,更新视图,使其没有自动转换的自动调整大小约束(请参阅 参考资料translatesAutoresizingMaskIntoConstraints)。

于 2014-01-06T21:50:59.183 回答
0

我认为您遇到的问题是您正在尝试调整 ECSlidingViewController 的子视图的大小。您应该调整 ECSlidingViewController 的视图大小。

我将创建一个容器视图控制器并将其作为入口点。子视图将是 iAd 视图和 ECSlidingViewController 的视图。

于 2014-02-15T17:04:20.310 回答