Вот коды:WatchKit: изображение не показано
@interface InterfaceController()
@property (nonatomic, weak) IBOutlet WKInterfaceImage *qrImage;
@property (nonatomic, weak) IBOutlet WKInterfaceLabel *label;
@end
@implementation InterfaceController
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
[self.label setText: @"Welcome"];
UIImage *image = [InterfaceController generateQRCodeWithString:@"Welcome"];
[self.qrImage setImage:image];
}
- (void)willActivate {
[super willActivate];
}
- (void)didDeactivate {
[super didDeactivate];
}
+ (UIImage *)generateQRCodeWithString:(NSString *)string {
NSData *stringData = [string dataUsingEncoding:NSUTF8StringEncoding];
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setValue:stringData forKey:@"inputMessage"];
[filter setValue:@"M" forKey:@"inputCorrectionLevel"];
CIImage *input = filter.outputImage;
CGAffineTransform transform = CGAffineTransformMakeScale(10.0f, 10.0f);
CIImage *output = [input imageByApplyingTransform: transform];
return [UIImage imageWithCIImage:output];
}
@end
Я пытаюсь создать QR-код из некоторого определенного текста и показать его в интерфейсе часов. Проблема в том, что UIImage, созданный generateQRCodeWithString:
, никогда не отображается. Однако, если я загружаю изображение с [UIImage imageNamed:@"XXX.png"]
из пакета расширения WatchKit, он отображается правильно.
Я не уверен, что происходит. Что я упустил? Заранее спасибо.
UPDATE: В ответ на Мск, да я уверен. Я попробовал NSLog изображение, оно дает <UIImage: 0x7fc261d276e0>, {230, 230}
Можете ли вы подтвердить, что generateQRCodeWithString возвращает изображение (не ноль)? – msk
Этот код должен быть правильным. Я вытягивал свои волосы, пытаясь понять это (на несколько дней) !! Очевидно, что ваше изображение не ноль, но оно каким-то образом освобождено или удалено, когда вы идете установить его в 'WKInterfaceImage'. Мое лучшее предположение, что это ошибка с 'WKInterfaceImage'. –
Вы, вроде бы, надеялись, когда я увижу, как вы создаете QRCodes в часах. Кажется, что WatchOS2 не поддерживает это :( –