gpt4 book ai didi

ios - 如何以编程方式更改名称以区分 Xcode 可视化调试器中的 UIView?

转载 作者:行者123 更新时间:2023-12-01 19:39:17 26 4
gpt4 key购买 nike

如何在 Xcode 可视化调试器中重命名 View ?
这是 UIViews 的海洋,所以几乎不可能分辨出哪个
uiview 是一个约束。

UIViewControllers 显示标题,而 UIViews 除非它是派生类
它是 UIView。你怎么区分他们?

切中要害

enter image description here

这似乎是 How to set the Identifier of a UIView in Xcode 4.5/iOS for debugging auto layout? 的副本

最佳答案

按住 Control 键单击有问题的 View ,然后在上下文菜单中选择 Print Description:

<UIView: 0x7fbec8508420; frame = (30 34; 163 117); autoresize = RM+BM; 
layer = <CALayer: 0x6000019c65c0>>
通常这足以识别 View 。如果不是,您可以询问 View 问题,尽管语法有点棘手:
(lldb) expr -l objc -O -- [(UIView*)0x7fbec8508420 backgroundColor]
<UIDynamicModifiedColor: 0x6000017c6f10; contrast = normal,
baseColor = <UIDynamicSystemColor: 0x6000019c6600; name = systemYellowColor>>
我有时使用的另一个技巧是给 View 一个标识符。一个鲜为人知的技巧是一个层有一个 name您可以随意使用。一个 View 有一个层。所以我声明一个扩展:
extension UIView {
@objc var name : String? { return layer.name }
}
现在你可以向 View 询问它的 name .您可以在代码中或(使用运行时属性)在 Storyboard 中分配名称。

自从我最初给出这个答案以来,我给 View 命名并在 View 调试器中查看它的技术已经有了一些发展,所以我想展示它现在的样子:
extension UIView {
@objc var debugName: String {
get { layer.name ?? "" }
set { layer.name = newValue }
}
open override var debugDescription: String {
var proposedDescription = description
if !debugName.isEmpty {
proposedDescription.insert(
contentsOf: "; name = '\(debugName)'",
at: proposedDescription.index(proposedDescription.endIndex, offsetBy: -1)
)
}
return proposedDescription
}
}
这很酷的原因是,当您打印描述时,调试名称会在查看调试期间自动显示在 Xcode 控制台中。我无法开始描述这是多么有用。与约束标识符一起,您可以轻松准确地计算出正在发生的事情。

关于ios - 如何以编程方式更改名称以区分 Xcode 可视化调试器中的 UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109674/

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