gpt4 book ai didi

iphone - 将无法满足的 NSLayoutConstraints 的内存地址映射到 UI 控件

转载 作者:可可西里 更新时间:2023-11-01 03:28:50 28 4
gpt4 key购买 nike

我很欣赏 XCode 将捕获无法满足的 NSLayoutConstraints 并为您提供一些相关信息,但是我不知道如何获取控件/约束的内存地址并将其映射到实际控件有问题。

我的应用程序相当大(大约 20 个屏幕),有些是大型 UIViewControllers,其中有几个 subview Controller 。有些是带有自定义单元格的 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.

如您所见,列出了内存地址。将这些粘贴到监 window 口的搜索栏中并没有透露太多信息。同时筛选线程和队列调用堆栈,我只在这个断点(异常断点)上得到反汇编代码。

最佳答案

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

解决方法:

  • 第一步:

    • 打开断点导航器 (cmd+7)
    • 点击左下方的“添加”按钮
    • 选择“添加符号断点”
    • 在显示“符号”的地方输入 UIViewAlertForUnsatisfiableConstraints
  • 第 2 步:运行您的项目。当控制台打印 Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7fc82d3e18a0 H:[UIView:0x7fc82aba1210(768)]> ,复制 View 的内存地址(此处为0x7fc82aba1210)。

  • 第 3 步:使用控制台中的以下命令更改此 View 的背景以了解它是哪一个:e (void)[0x7fc82d3e18a0 setBackgroundColor:[UIColor redColor]]

  • 第 4 步:继续该程序并查看更新后的 UI。背景为红色的 View 就是有问题的 View 。

  • 第 5 步:返回您的 IB,找出此 View 中的问题所在。

关于iphone - 将无法满足的 NSLayoutConstraints 的内存地址映射到 UI 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345160/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com