WatchKit: установка WKInterfaceImage программно

Я хочу установить для своего UIImage значение WKInterfaceImage, но симулятор показывает только черный экран. Он работает нормально с использованием метода setImageNamed: NSString*, но не с setImage: UIImage*. Мой файл1.png добавлен в папку «(Имя приложения) Приложение WatchKit».

- (void)willActivate {
   [self.imageView1 setImage: [UIImage imageNamed: @"file1"]]; // doesn't work
   [self.imageView1 setImageNamed: @"file1"]; // works OK
    [super willActivate];
}

Спасибо!


person Dawid    schedule 10.03.2015    source источник


Ответы (2)


Все работает как положено.

file1 находится в папке приложения WatchKit, то есть на часах.

Вызов [UIImage imageNamed:] загружает из основного пакета, который не содержит file1, поэтому вы получаете nil.

То, как вы это делаете, правильно. setImageNamed: сначала будет искать изображения на часах, а затем в кеше.

person Jack    schedule 10.03.2015
comment
Я бы хотел, чтобы Xcode выдавал вам предупреждение, когда вы пытаетесь сделать это в расширении watchkit. - person psobko; 29.10.2015

Вызов [UIImage imageNamed:imageName] с вашего добавочного номера всегда будет возвращать nil для кэшированного изображения. Изображение кэшируется на часах, а не в вашем расширении.

Как только изображение кэшируется, оно позволяет вам установить WKInterfaceImage с помощью метода [WKInterfaceImage setImageNamed:].

person gagarwal    schedule 10.03.2015