Правильный способ кэширования анимированного изображения в Apple Watch?

Я занимаюсь разработкой приложения для Apple Watch, отображающего данные с помощью WKInterfaceTable, каждая строка имеет анимированное изображение (80 кадров, длительность 10 секунд)

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

Я попытался удалить анимированное изображение, чтобы проверить, не вызвана ли проблема задержкой изображения, и в результате получилось ДА.

Я искал решения для кэширования изображения на Apple Watch, я сделал следующий код:

Во-первых, ленивая загрузка изображения с iPhone, создание анимированного UIImage

- (UIImage *)countDownImage
{
    if (_countDownImage == nil) {
        NSMutableArray *array = [[NSMutableArray alloc] init];
        for (int i=0; i<=79; i++) {
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"counteight-%i", i]];
            [array addObject:image];
        }
        _countDownImage = [UIImage animatedImageWithImages:array duration:10.0f];
    }
    return _countDownImage;
}

Во-вторых, в моем WKInterfaceController, который содержит WKInterfaceTable

Добавить кэшированное изображение в кеш, используя WKInterfaceDevice

if ([[WKInterfaceDevice currentDevice].cachedImages objectForKey:@"countImage"] == nil) {
    [[WKInterfaceDevice currentDevice] addCachedImage:self.countDownImage name:@"countImage"];
}

Наконец, в моем RowController используйте setImageNamed от WKInterfaceImage, чтобы установить изображение, которое я ранее кэшировал

[self.animateImage setImageNamed:@"countImage"];
[self.animateImage startAnimatingWithImagesInRange:NSMakeRange(0, 79) duration:10 repeatCount:0];

Это работает, и изображение было кэшировано (Проверено:

[[WKInterfaceDevice currentDevice].cachedImages objectForKey:@"countImage"] 

)

Но он все еще очень запаздывает на реальном устройстве Apple Watch, даже медленнее, чем не установленное изображение кэша.

Я не знаю, где я делаю не так, может кто-нибудь дать мне совет, как правильно кэшировать анимированное изображение на Apple Watch?

Спасибо!

0 ответов

Другие вопросы по тегам