WKInterfaceController,如何以编程方式设置“间距”和“插图”
Posted
技术标签:
【中文标题】WKInterfaceController,如何以编程方式设置“间距”和“插图”【英文标题】:WKInterfaceController, how to programmatically set "Spacing" & "Insets" 【发布时间】:2020-11-14 09:24:52 【问题描述】:我查看了 Apple 的 WKInterfaceController 文档:
Insets:在界面控制器的边缘与其内容之间插入的空间量(以磅为单位)。选择自定义可让您为顶部、底部、左侧和右侧边缘指定不同的值。
间距:界面控制器中项目之间的额外间距(以磅为单位)。
在 Interface.storyboard 中,我可以在右侧面板上设置这些,基本上我将 Insets 设置为 Custom 并将它们全部设置为 0。对于 Spacing,我检查“Custom”并将其设置为 0 以摆脱所有空间
有没有办法以编程方式设置这些?我尝试了代码(我找不到 WKInterfaceController 的“Spacing”属性,我想知道这是从哪里来的,但我认为对于 Insets相应的属性是“contentSafeAreaInsets”,它采用“UIEdgeInsets”)
对于“contentSafeAreaInsets”,当我尝试时,它看起来只是一个只能获取的道具——错误:“无法用存储的属性 'contentSafeAreaInsets' 覆盖”:
override var contentSafeAreaInsets: UIEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
我也尝试在清醒状态下设置它,甚至添加一个覆盖初始化,但似乎无法以编程方式设置它。当我尝试其他东西时也是如此,例如尝试为 WKInterfaceGroup 设置“间距”(我什至找不到间距定义,除了它出现在界面故事板的右侧面板中)
难道这些只是不打算在代码中设置而必须在界面故事板中设置吗?
【问题讨论】:
【参考方案1】:由于contentSafeAreaInsets
是一个计算属性,您应该这样覆盖它:
override var contentSafeAreaInsets: UIEdgeInsets
UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
【讨论】:
以上是关于WKInterfaceController,如何以编程方式设置“间距”和“插图”的主要内容,如果未能解决你的问题,请参考以下文章
WKInterfaceController 中的左边缘滑动会挂起 Apple Watch 中的 UI
可以在 SwiftUI Watch 项目中实例化 WKInterfaceController 吗?
我们如何为 WKInterfaceController 移植 addGestureRecognizer(recognizer)
XCTestCase 崩溃的 WKInterfaceController 子类上的“alloc init”
WKInterfaceLabel 未在 WKInterfaceController 中更新 - Swift Apple watch dev