DesignReviewer
是一个应用内调试的替代方案,它能实现通常需要连接到 Xcode 才能进行的视图调试。
当 LLDB 不配合时:无需等待 Xcode 卡顿,即可进行视图检查
当 Xcode 崩溃时:利用模仿 Xcode 的 3D 视图层级体验
通过层级列表导航 | 通过分解的层级导航 |
---|---|
![]() |
![]() |
谁还需要重新编译?:修改各种视图/约束属性,实时更改会反映在预览和应用程序本身中
检查你的约束是否合理:快速查看屏幕上任意两个视图之间的空间
安装包,可以通过 Swift Package Manager 完成。(如果 Facebook 可以声称只支持那么多开发者需要的 React Native 的 Cocoapods,那么我们这些凡人当然也可以用 SPM 来标记我们的领地,即使只有一个人会用到?)
确定你想要如何调用 DesignReviewer
。 如果你的应用程序相当简单,或者恰好有一个可以放置并且始终可以访问的 UIButton,那么可以通过按下 UIButton
按钮来直接调用。 或者,你可以选择更花哨的方式,例如摇晃手势。 无论哪种用例,你只需调用以下内容
// window being the target window through which the DesignReviewer should parse.
DesignReviewer.start(inAppWindow: window)
你可以设置 reviewer 以显示你希望给定 DesignReviewable
显示的任何自定义属性。 但是,目前这仅限于符合 KVC 的属性。 对于大多数 Swift 情况,一个可能有用的建议是在你的属性声明中附加 @objc dynamic
,例如:
@objc dynamic var dummyString: String {
return "\(Int.random(in: 1..<5000))"
}
然后,你可以在 DesignReviewer
上调用此函数,将此属性添加到要显示的值列表中
static func addCustomMutableAttribute<T: DesignReviewable>(_ attribute: DesignReviewCustomMutableAttribute, to reviewable: T.Type)
你可以使用上述方法添加常规属性类型,但对于枚举属性,你需要以不同的方式处理它们。 由于 keyPath 访问要求,它们仍然需要 @objc dynamic
。 无论如何,你需要调用此方法来添加枚举属性
static func addCustomEnumAttribute<T: DesignReviewable, EnumDescribing: ReviewableDescribing>(
_ attribute: DesignReviewCustomEnumAttribute<EnumDescribing>,
to reviewable: T.Type)
示例项目提供了这两种情况的示例。
DesignReviewable
提供其他可检查属性的功能DesignReviewable
类型上符合 KVC 的属性