NSLayoutConstraint 冲突。 UIView-Encapsulated-Layout-Height
NSLayoutConstraint conflict. UIView-Encapsulated-Layout-Height
我在使用 autoLayout 时遇到了一些问题。特别是在 iOS8.
我已经上网看了,在使用UITableViewCell
时发现了类似的问题。
但是这里我没有使用UITableViewCell
并且根本没有UITableView
。
当它发生时,我只有一个ADBannerView
和一个UIWebView
要处理。
我在 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];
如果有人知道发生了什么,请告诉我。
正在阅读您的约束条件:
"<NSLayoutConstraint:0x14d9b320 V:[ADBannerView:0x14d40c30(50)]>"
ADBannerView has a height of 50 pixels
"<NSLayoutConstraint:0x14d97b00 V:|-(20)-[ADBannerView:0x14d40c30] (Names: '|':UIView:0x14e6c870 )>"
ADBannerView is pinned to the top of the View with a margin of 20
pixels
<NSLayoutConstraint:0x14d34880 ADBannerView:0x14d40c30.bottom == UIView:0x14e6c870.bottom>
You have pinned the bottom of the ADBannerView to the bottom of the
UIView.
"<NSLayoutConstraint:0x14e256f0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x14e6c870(568)]>"
The current View has a height of 568 pixels.
现在这与您分配给 ADBannerView 的 50 像素高度以及 AdBannerView 被固定在距 UIView 顶部 20 像素的高度冲突。
要么是ADBannerView的高度需要打破,要么是底部的pinning,因为两个约束都不能满足...
从 UIView 底部取消固定 AdBannerView 以解决此问题
我在使用 autoLayout 时遇到了一些问题。特别是在 iOS8.
我已经上网看了,在使用UITableViewCell
时发现了类似的问题。
但是这里我没有使用UITableViewCell
并且根本没有UITableView
。
当它发生时,我只有一个ADBannerView
和一个UIWebView
要处理。
我在 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];
如果有人知道发生了什么,请告诉我。
正在阅读您的约束条件:
"<NSLayoutConstraint:0x14d9b320 V:[ADBannerView:0x14d40c30(50)]>"
ADBannerView has a height of 50 pixels
"<NSLayoutConstraint:0x14d97b00 V:|-(20)-[ADBannerView:0x14d40c30] (Names: '|':UIView:0x14e6c870 )>"
ADBannerView is pinned to the top of the View with a margin of 20 pixels
<NSLayoutConstraint:0x14d34880 ADBannerView:0x14d40c30.bottom == UIView:0x14e6c870.bottom>
You have pinned the bottom of the ADBannerView to the bottom of the UIView.
"<NSLayoutConstraint:0x14e256f0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x14e6c870(568)]>"
The current View has a height of 568 pixels.
现在这与您分配给 ADBannerView 的 50 像素高度以及 AdBannerView 被固定在距 UIView 顶部 20 像素的高度冲突。
要么是ADBannerView的高度需要打破,要么是底部的pinning,因为两个约束都不能满足...
从 UIView 底部取消固定 AdBannerView 以解决此问题