查找 WKInterfaceImage 的高度和宽度

Find height and width of a WKInterfaceImage

我想以编程方式渲染一个 UIImage,然后在 Apple Watch 上以 WKInterfaceImage 的形式显示它,我将其高度和宽度设置为 "Relative to Container"(这样它基本上占据了整个屏幕 space)。 如何获得 WKInterfaceImage 的宽度和高度?据我所知,没有 frame-, border- 或者 layer-属性 我可以从我的扩展代码访问。那么获取这些信息的正确方法是什么?

很奇怪,我发现有一个 setWidth 和 setHeight 方法,但是我找不到根据 getter 方法。

归根结底,我基本上是在寻找与此等效的手表套件:

@IBOutlet weak var imageView: UIImageView!
//...
var width = imageView.frame.width
var height = imageView.frame.height

遗憾的是,您无法以编程方式设置图像的宽度和高度。将图像模式设置为适合内容的大小,容器视图也一样。它会自行调整大小以适应内容。

引用 class 参考中的唯一可用属性

这是对 WatchKit 的一个非常普遍的误解。

您不能通过这种方式查询运行时数据。原因是 Apple 不希望您每次需要读取值时都对 Watch 执行 ping 操作。他们希望尽可能优化电池寿命。相反,你需要 "know" 什么宽度和高度 WKInterfaceImage。您在 Storyboard 中定义了它,因此您确切地知道它已经是什么。 Xscope 对准确计算大小非常有帮助。知道大小后,您需要将该大小存储在 WKInterfaceController 中,以便在运行时获得数据。

class ImageInterfaceController : WKInterfaceController {
    let imageSize38mm = CGSize(width: 100, height: 100)
    let imageSize42mm = CGSize(width: 120, height: 120)
}

希望这有助于阐明您无法在运行时查询布局和大小信息这一事实,就像在 iOS 应用程序中一样。