HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 将不可满足的NSLayoutConstraints的内存地址映射到UI控件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我很欣赏XCode将捕获不可解决的NSLayoutConsTraints并为您提供有关它的一些信息,但是我不知道如何获取控件/约束的内存地址并将其映射到有问题的实际控件.

我的应用程序相当大(大约20个屏幕),有些是大型UIViewControllers,其中包含多个子视图控制器.一些是具有自定义单元格的UITableViews和具有自定义单元格的UICollectionViews.我有一段时间来解决这个错误的原因(在横向旋转时发生)

以下是我的控制台中的信息:

2013-05-02 11:18:53.225 Smile[7519:c07] 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) 
(
    "<NSAutoresizingMaskLayoutConsTraint:0x16083b60 h=-&- v=-&- UIView:0xa5a1d00.width == UIWindow:0xa09eee0.width>","<NSLayoutConsTraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-|   (Names: '|':UIView:0xa5a1d00 )>","<NSLayoutConsTraint:0xa5a2140 V:|-(0)-[UIView:0xa59f160]   (Names: '|':UIView:0xa5a1d00 )>","<NSAutoresizingMaskLayoutConsTraint:0xa593340 h=--- v=--- H:[UIWindow:0xa09eee0(768)]>"
)

Will attempt to recover by breaking consTraint 
<NSLayoutConsTraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-|   (Names: '|':UIView:0xa5a1d00 )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConsTraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be Helpful.

如您所见,列出了内存地址.将这些内容粘贴到观察窗口的搜索栏中并没有太多显示.通过线程和队列调用堆栈进行筛选,我只在此断点上获得反汇编代码(异常断点).

解决方法

由于这些网站: Debugging iOS AutoLayout IssuesDancing with the Debugger,我找到了一种解决方案.感谢Xcode控制台,您可以确定问题来自哪个视图.

解决方案:

>第1步:

>打开断点导航器(cmd 7)
>单击左下方的“添加”按钮
>选择“添加符号断点”
> UIViewAlertForUnsatisfiableConsTraints中的’符号’类型

>第2步:运行您的项目.当控制台打印将尝试通过违反约束< NSLayoutConsTraint:0x7fc82d3e18a0 H:[UIView:0x7fc82aba1210(768)]>进行恢复时,复制视图的内存地址(此处为0x7fc82aba1210).>步骤3:在控制台中使用此命令更改此视图的背景以了解它是哪一个:e(void)[0x7fc82d3e18a0 setBACkgroundColor:[UIColor redColor]]>步骤4:继续该程序并查看更新的UI.红色背景颜色的视图是有问题的视图.>步骤5:返回到您的IB并查找此视图中存在问题的约束.

大佬总结

以上是大佬教程为你收集整理的iphone – 将不可满足的NSLayoutConstraints的内存地址映射到UI控件全部内容,希望文章能够帮你解决iphone – 将不可满足的NSLayoutConstraints的内存地址映射到UI控件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。