如何在 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,其大小与从 WKInterfaceController
的 contentFrame
属性 中获得的大小完全相同,并且比例为 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.
我有一个 iOS 应用程序,其中包含 Apple Watch 应用程序。我对解决方案所做的是显示在 iOS 应用程序中绘制并发送到手表应用程序的趋势图(折线图)。我使用 WKInterfaceImage 实例在 Apple Watch 应用程序中显示图形,但它看起来并不清晰。有没有办法在应用程序中为图像启用缩放,以便用户可以缩放并read/see清楚图表中的详细信息。
查看手表应用程序中的当前图形图像,
我不确定像我问的那样的事情是否可行,但如果不行,有人可以建议我一些更好的选择来更好地实现它。
目前无法在 WatchKit SDK 中允许用户 "zoom"。相反,我建议您以更易于在 Watch 上阅读的尺寸生成图表图像。
首先,我建议不要在 iOS 应用程序中生成 UIImage 并将其发送到 Watch Extension,因为发送图像(即 NSData
)比仅发送图点坐标。
为了以清晰的方式绘制图形,我建议使用 UIGraphicsBeginImageContextWithOptions
创建一个 CGContext,其大小与从 WKInterfaceController
的 contentFrame
属性 中获得的大小完全相同,并且比例为 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.