NSLayoutConstraint冲突。 UIView的封装,布局,高度

时间:2015-05-20 10:44:10

标签: ios uitableview uiview autolayout nslayoutconstraint

我在使用autoLayout时遇到了一些问题。特别是在iOS8中。

我已经阅读了网页,并在使用UITableViewCell时发现了类似的问题。 但在这里,我没有使用UITableViewCell,也没有UITableView

如果发生这种情况,我只需要ADBannerViewUIWebView来处理。

我在Xcode调试器中收到以下消息:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x14e256f0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x14e6c870(568)]>",
    "<NSLayoutConstraint:0x14d9b320 V:[ADBannerView:0x14d40c30(50)]>",
    "<NSLayoutConstraint:0x14d97b00 V:|-(20)-[ADBannerView:0x14d40c30]   (Names: '|':UIView:0x14e6c870 )>",
    "<NSLayoutConstraint:0x14d34880 ADBannerView:0x14d40c30.bottom == UIView:0x14e6c870.bottom>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x14d34880 ADBannerView:0x14d40c30.bottom == UIView:0x14e6c870.bottom>

首先我要说的是评论。我不知道第一个约束(UIView - Encapsulated-Layout-Height)来自何处。 第二件事;我添加了一个约束(虽然已经有太多),以强制ADBannerView的高度,修复了显示问题。 但我仍然得到了消息(正如我所料)。

如果我不添加约束来强制ADBannerView的高度。显示屏的背景变为白色,无论我点击哪里,我都会点亮iAd。有点像ADBannerView的高度正在填满整个显示器。

有任何解决此问题的建议吗?

当然我没有忘记:

[adBanner setTranslatesAutoresizingMaskIntoConstraints:NO];

如果有人知道发生了什么,请告诉我。

1 个答案:

答案 0 :(得分:1)

阅读你的约束:

"<NSLayoutConstraint:0x14d9b320 V:[ADBannerView:0x14d40c30(50)]>"
  

ADBannerView的高度为50像素

"<NSLayoutConstraint:0x14d97b00 V:|-(20)-[ADBannerView:0x14d40c30]   (Names: '|':UIView:0x14e6c870 )>"
  

ADBannerView固定在View的顶部,边距为20   像素

<NSLayoutConstraint:0x14d34880 ADBannerView:0x14d40c30.bottom == UIView:0x14e6c870.bottom>
  

您已将ADBannerView的底部固定在底部   的UIView。

"<NSLayoutConstraint:0x14e256f0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x14e6c870(568)]>"
  

当前视图的高度为568像素。

现在,这与您分配给ADBannerView的50像素的高度相矛盾,AdBannerView被固定在距离UIView顶部20像素的位置。

ADBannerView的高度需要被破坏,还是底部的钉扎,因为两个约束都不能满足......

从UIView底部取消固定AdBannerView以解决此问题