如何找出与NSLayoutConstraints的确切冲突?

声致发光

我试图将40x40徽标放置在屏幕顶部,距顶部20pt,最后与父视图水平对齐。

var views = ["tableView":self.tableView!,"logoImageView":logoImageView,"view":self.view]

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[logoImageView(40)]", options: nil, metrics: nil, views: views))

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[logoImageView(40)]", options: nil, metrics: nil, views: views))

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[logoImageView]", options: nil, metrics: nil, views: views))        

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[view][logoImageView]", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: views));

但这是我在调试器/控制台中遇到的错误。

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:0x7fa78487e8f0 V:|-(20)-[UIImageView:0x7fa784b29350]   (Names: '|':UIView:0x7fa78373b8e0 )>",
    "<NSLayoutConstraint:0x7fa784886f70 V:[UIView:0x7fa78373b8e0]-(0)-[UIImageView:0x7fa784b29350]>",
    "<NSLayoutConstraint:0x7fa78488caa0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7fa78373b8e0(667)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7fa784886f70 V:[UIView:0x7fa78373b8e0]-(0)-[UIImageView:0x7fa784b29350]>

如果有人可以帮助解释问题所在和正确的解决方法,那将是很好的NSLayoutFormatOptions

谢谢!

肯·托马斯(Ken Thomases)

问题在于以下两个约束:

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[logoImageView]", options: nil, metrics: nil, views: views))        
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[view][logoImageView]", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: views));

第一个说,的顶部logoImageView应该是其超级视图顶部起20分。第二个说的顶部logoImageView应该是的底部的0点view

问题是,这view是的监督logoImageView您可以知道,因为superview(|)在此约束中:

"<NSLayoutConstraint:0x7fa78487e8f0 V:|-(20)-[UIImageView:0x7fa784b29350]   (Names: '|':UIView:0x7fa78373b8e0 )>",

在此约束条件下与相邻视图相同:

"<NSLayoutConstraint:0x7fa784886f70 V:[UIView:0x7fa78373b8e0]-(0)-[UIImageView:0x7fa784b29350]>",

因此,两个约束共同要求view高20点。但是,表格视图对该视图施加了667个高度,如以下约束所示:

"<NSLayoutConstraint:0x7fa78488caa0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7fa78373b8e0(667)]>"

因此,冲突。

我怀疑问题是您添加logoImageView了错误的视图,还是要在V:[view][logoImageView]视觉格式字符串中列出其他视图

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找出与jRuby兼容的确切的ruby版本

来自分类Dev

Xamarin 如何实现 iOS <TableSection> 以及如何找出标题和颜色的确切大小?

来自分类Dev

找出CentOS的确切安装时间

来自分类Dev

HashMap中哈希码冲突的确切原因

来自分类Dev

如何使用jquery / javascript获取div的确切位置

来自分类Dev

如何检查是否存在相同的确切文件

来自分类Dev

MongoDB:如何查找已安装的MongoDB的确切版本

来自分类Dev

如何检查是否存在相同的确切文件

来自分类Dev

您如何指定Minitest测试的确切顺序?

来自分类Dev

如何找到日期字符串的确切格式?

来自分类Dev

如何确定ETS表的确切内存大小?

来自分类Dev

异步:如何中断引发异常的确切代码行?

来自分类Dev

如何遍历浮点数的确切表示形式?

来自分类Dev

如何使图像适合<td>并保持<td>的确切大小

来自分类Dev

如何找到特定数字的确切操作集?

来自分类Dev

如何替换PHP中的确切内容

来自分类Dev

如何知道完成线程所需的确切时间

来自分类Dev

如何设置内联SVG元素的确切大小?

来自分类Dev

如何匹配字符串中的确切单词?

来自分类Dev

如何告诉Apollo Codegen查找查询的确切文件

来自分类Dev

如何获取Lua中加载的脚本的确切路径?

来自分类Dev

TypeScript:如何推断分配值的确切类型

来自分类Dev

如何验证Laravel中的确切单词?

来自分类Dev

如何为特定用户保存程序的确切状态?

来自分类Dev

如何在表格的确切位置显示工具提示?

来自分类Dev

如何学习Windows 10的确切版本?

来自分类Dev

如何显示WinMerge中单词的确切差异?

来自分类Dev

您如何指定Minitest测试的确切顺序?

来自分类Dev

如何设置内联SVG元素的确切大小?

Related 相关文章

热门标签

归档