Разрешение ресурса изображения Apple Watch

TL; DR Как подготовить изображения для яблочных часов?

Для яблочных часов существует 2 типа разрешения:

  1. 38mm: 272x340

  2. 42mm: 312x390

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

Если у меня есть изображение 136x108 (изображение выше) для WKInterfaceButton / WKInterfaceImage, как я могу убедиться, что оно хорошо выглядит на обоих часах?

Я установил для раскадровки любой размер экрана, для высоты установлено значение «Размер по размеру содержимого», а для ширины установлено значение «относительно контейнера».

Вопрос: 1) Не слишком ли низкое разрешение изображения (136х108)? Как мне измерить высоту и ширину? например height of the watch - высота кнопки (как получить эту высоту) =?

2) Что я должен установить для свойства size width и height?

а) Размер по размеру, относительно контейнера или фиксированный? введите описание изображения здесь

3) Какое разрешение для кассет Images.x необходимо для каждого @ 1x @ 2x и @ 3x

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


person user1872384    schedule 12.02.2015    source источник


Ответы (2)


Вам не нужно искать решение для работы с обоими размерами. Функция класса размера дает вам возможность предоставлять отдельные макеты и ресурсы изображений для каждого размера соответственно.

Чтобы ответить на ваши вопросы:

  1. Слишком маленький. Подготовьте изображения, которые точно соответствуют размеру дисплея на часах любого размера.

  2. Вы можете использовать относительно контейнера для ширины, но с фиксированной высотой - установите точную высоту для каждого размера.

  3. Не используйте универсальный тип ресурса изображения. Используйте Apple Watch специально. Тогда у вас будет возможность предоставлять отдельные изображения для каждого размера. И нужны только изображения @ 2x.

person Richard Bao    schedule 25.05.2015
comment
Актив x2, кажется, только для IB? Кто-нибудь знает, копируется ли и на часы? И какого размера она должна быть? @ 2x, но какому циферблату соответствует? (Похоже, это не имеет значения, если я последовательна.) - person Johan; 11.01.2016
comment
@Gatada: вам нужно изменить настройки этого изображения, чтобы разрешить отдельные изображения для каждого циферблата вместо универсального изображения. Снимок экрана, показанный выше (в исходном вопросе), не предназначен для использования приложения для часов. Убедитесь, что в IB указаны правильные типы устройств. - person Richard Bao; 26.06.2016

Это поможет:

+ (UIImage*) resizeImage:(UIImage*)original withWidth:(float)newWidth withHeight:(float)newHeight{
    UIImage * originalScaled = [UIImage imageWithCGImage:original.CGImage scale:[UIScreen mainScreen].scale orientation:original.imageOrientation];

    CGSize newSize = CGSizeMake(newWidth, newHeight);

    UIGraphicsBeginImageContextWithOptions(newSize, // context size
                                           NO,      // opaque?
                                           0);      // image scale. 0 means "device screen scale"

    CGContextRef imageContext = UIGraphicsGetCurrentContext();
    CGContextSetInterpolationQuality(imageContext, kCGInterpolationHigh);
    [originalScaled drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

Ваше изображение должно быть в высоком разрешении, потому что преобразование его в изображение сетчатки сделает его меньше. Вы создаете сетчатку таким образом:

scale:[UIScreen mainScreen].scale

Итак, если ваше изображение имеет размер 136x108, вы должны создать экземпляр изображения и передать эту ширину и высоту методу. Будет хорошо смотреться на часах.

person jastrada    schedule 20.02.2015