Как включить масштабирование изображений в Apple Watch

У меня есть приложение для iOS с включенным приложением Apple Watch. Что я делаю с решением, так это показываю диаграмму тенденций (линейный график), которая рисуется в приложении iOS и отправляется в приложение для просмотра. Я использую экземпляр WKInterfaceImage, чтобы показать график в приложении Apple Watch, но он не выглядит четким. Есть ли способ включить масштабирование изображений в приложении, чтобы пользователь мог масштабировать и четко читать/видеть детали на диаграмме.

Проверьте текущее изображение графика, которое у меня есть в приложении для часов,

введите здесь описание изображения

Я не уверен, возможно ли что-то вроде того, что я спросил, но если нет, может ли кто-нибудь предложить мне несколько лучших вариантов для лучшей реализации этого.


person Sagar S. Kadookkunnan    schedule 15.05.2015    source источник


Ответы (2)


В настоящее время нет возможности разрешить пользователю «масштабировать» SDK WatchKit. Вместо этого я бы посоветовал вам создавать графические изображения такого размера, который легче читается на часах.

person bgilham    schedule 16.05.2015

Во-первых, я рекомендую не генерировать UIImage в приложении iOS и отправлять его в Watch Extension, потому что отправка изображения (т.е. NSData) — это намного больше данных, чем просто отправка координат точек графика.

Чтобы нарисовать график в понятной форме, я рекомендую создать CGContext, используя UIGraphicsBeginImageContextWithOptions с точно таким же размером, который вы получаете из свойства contentFrame WKInterfaceController, и масштабом 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];

Я использую этот код с взглядом, поэтому мне нужно иметь определенную высоту в соответствии с шаблонами взгляда. Я устанавливаю высоту WKInterfaceImage вручную, чтобы убедиться, что он имеет тот же размер, что и UIImage, чтобы избежать масштабирования и, следовательно, дизеринга. Кажется, это работает, но немного грязно из-за чисел с фиксированной точкой.

Обратите внимание, что 42-миллиметровые часы дают вам ширину contentFrame в 156 точек, а 38-миллиметровые — 136 точек, поэтому вам лучше взять эти ширины из contentFrame на случай, если они изменятся в будущей WatchOS.

person bio    schedule 19.05.2015