tôi có mã này làm việc trên iOS 7:đối tượng UIImage Unarchive trả CGSizeZero hình ảnh sử dụng NSKeyedUnarchiver trên iOS 8
NSData *imageData = [NSKeyedArchiver archivedDataWithRootObject:self.imageView.image];
UIImage *imageCopy = [NSKeyedUnarchiver unarchiveObjectWithData:imageData];
NSLog(@"%@",NSStringFromCGSize(imageCopy.size));
nhưng trên iOS 8, kích thước imageCopy
's luôn là zero. Điều tương tự cũng xảy ra khi tôi lưu trữ UIImageView
, hình ảnh của chế độ xem hình ảnh không lưu trữ có kích thước bằng không. Tôi phát hiện ra rằng trong iOS 7, UIImage
tiêu đề là như sau:
UIImage : NSObject <NSSecureCoding, NSCoding>
nhưng trên iOS 8 nó là:
UIImage : NSObject <NSSecureCoding>
Dường như các giao thức NSCoding
là mất tích trên iOS 8. Tôi có để mã hóa dữ liệu hình ảnh thực tế: UIImagePNGRepresentation(self.imageView.image)
thay vì hình ảnh để đảm bảo tôi có được hình ảnh tốt.
Có ai biết tại sao điều này xảy ra không? Nó có tương thích ngược không? Tôi nhận thấy trong phiên bản trước đó của iOS UIImage
không phù hợp với NSCoding
.
Mã này hoạt động tốt trên iOS8/Xcode6 ít nhất đối với tôi. Tôi nhận được {0, 0} chỉ cho hình ảnh là không, cho tất cả những người khác tôi nhận được {640, 640} vv – kabarga
Không làm việc cho tôi, tôi đang sử dụng Xcode6 Phiên bản 6.0.1 trên iOS8, còn bạn thì sao? – gabbler
Phiên bản 6.0.1 (6A317) và đã thử trên iPhone 5s. – kabarga