Как включить масштабирование для изображений в Apple Watch
У меня есть приложение для iOS с приложением Apple Watch. То, что я делаю с решением, показывает диаграмму трендов (линейный график), которая рисуется в приложении iOS и отправляется в приложение для просмотра. Я использую экземпляр WKInterfaceImage для отображения графика в приложении Apple Watch, но он не выглядит ясным. Есть ли способ включить масштабирование для изображений в приложении, чтобы пользователь мог масштабировать и читать / видеть детали из диаграммы четко.
Проверьте текущее графическое изображение у меня в приложении для часов,
Я не уверен, возможно ли что-то подобное, о чем я просил, но если нет, то может ли кто-нибудь предложить мне лучшие варианты, чтобы реализовать это лучше.
2 ответа
В настоящее время нет способа разрешить пользователю "увеличивать" в WatchKit SDK. Вместо этого я бы предложил, чтобы вы генерировали изображения графиков в размере, более удобном для чтения на часах.
Во-первых, я рекомендую не генерировать UIImage в приложении iOS и отправлять его на расширение Watch, так как при отправке изображения (т.е. NSData
) намного больше данных, чем просто отправка координат точек графа.
Чтобы нарисовать график понятным способом, я рекомендую создать CGContext, используя UIGraphicsBeginImageContextWithOptions
с точным размером, который вы получите от contentFrame
собственностью WKInterfaceController
и шкала 2, потому что дисплей часов всегда 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];
Я использую этот код с первого взгляда, поэтому мне нужно иметь определенные высоты в соответствии с шаблонами взгляда. Я устанавливаю высоту WKInterfaceImage
вручную, чтобы убедиться, что он имеет тот же размер, что и UIImage, чтобы избежать масштабирования и, следовательно, размывания. Кажется, это работает, но это немного грязно из-за чисел с фиксированной точкой.
Обратите внимание, что 42-миллиметровые часы дают вам contentFrame
ширина 156 точек, в то время как 38 мм дает вам 136 точек, так что вам лучше взять эту ширину из contentFrame
на случай, если это изменится в будущем WatchOS.