如何在 Apple Watch 中启用图像缩放

How to enable zoom for images in Apple Watch

我有一个 iOS 应用程序,其中包含 Apple Watch 应用程序。我对解决方案所做的是显示在 iOS 应用程序中绘制并发送到手表应用程序的趋势图(折线图)。我使用 WKInterfaceImage 实例在 Apple Watch 应用程序中显示图形,但它看起来并不清晰。有没有办法在应用程序中为图像启用缩放,以便用户可以缩放并read/see清楚图表中的详细信息。

查看手表应用程序中的当前图形图像,

我不确定像我问的那样的事情是否可行,但如果不行,有人可以建议我一些更好的选择来更好地实现它。

目前无法在 WatchKit SDK 中允许用户 "zoom"。相反,我建议您以更易于在 Watch 上阅读的尺寸生成图表图像。

首先,我建议不要在 iOS 应用程序中生成 UIImage 并将其发送到 Watch Extension,因为发送图像(即 NSData)比仅发送图点坐标。

为了以清晰的方式绘制图形,我建议使用 UIGraphicsBeginImageContextWithOptions 创建一个 CGContext,其大小与从 WKInterfaceControllercontentFrame 属性 中获得的大小完全相同,并且比例为 2,因为 Watch 显示屏始终是 Retina。看这个例子:

    CGSize size = self.contentFrame.size;
    if (size.width > 150)
        size.height = 99; // 42mm
    else
        size.height = 87; // 38mm
    [self.graphImage setHeight:size.height];

    DLog(@"drawing graph into size %@", NSStringFromCGSize(size));
    UIGraphicsBeginImageContextWithOptions(size, NO, 2);
    [graph drawRect:CGRectMake(0, 0, size.width, size.height)]; // draw something
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [self.graphImage setImage:image];

我正在使用此代码,所以我需要根据 glance 模板具有特定的高度。我正在手动设置 WKInterfaceImage 的高度,以确保它具有与 UIImage 相同的大小,以避免缩放并因此抖动。 这似乎可行,但由于固定点数,它有点脏。

请注意,42 毫米手表的 contentFrame 宽度为 156 点,而 38 毫米手表的宽度为 136 点,因此您最好从 contentFrame 中获取这些宽度,以防将来发生变化WatchOS.