Ho questo codice funzionante su iOS 7:oggetto UIImage Annulla archiviazione restituisce un'immagine CGSizeZero utilizzando NSKeyedUnarchiver su iOS 8
NSData *imageData = [NSKeyedArchiver archivedDataWithRootObject:self.imageView.image];
UIImage *imageCopy = [NSKeyedUnarchiver unarchiveObjectWithData:imageData];
NSLog(@"%@",NSStringFromCGSize(imageCopy.size));
ma su iOS 8, dimensioni imageCopy
s' è sempre zero. La stessa cosa accade quando archivio UIImageView
, l'immagine di imageView non archiviata ha una dimensione zero. Ho scoperto che in iOS 7, UIImage
intestazione è come:
UIImage : NSObject <NSSecureCoding, NSCoding>
ma su iOS 8 è:
UIImage : NSObject <NSSecureCoding>
Sembra che il protocollo NSCoding
manca su iOS 8. Devo codificare i dati effettivi dell'immagine: UIImagePNGRepresentation(self.imageView.image)
invece dell'immagine per assicurarmi di ottenere una buona immagine indietro.
Qualcuno sa perché questo accade? È per la retrocompatibilità? Ho notato in iOS versione precedente UIImage
non conforme a NSCoding
.
Questo codice funziona bene su iOS 8/Xcode6 almeno per me. Ottengo {0, 0} solo per le immagini che sono nul, per tutti gli altri ottengo {640, 640} ecc. – kabarga
Non funziona per me, sto usando Xcode6 Versione 6.0.1 su iOS8, e tu? – gabbler
Versione 6.0.1 (6A317) e provato su iPhone 5s. – kabarga