Я скриншоты и запись их в файл с этим кодом:Загрузка из файла не работает.
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
NSArray *directories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [directories objectAtIndex:0];
NSString *key = [documentsDirectory stringByAppendingPathComponent:@"screenshots.archive"];
NSMutableArray *storageArray = [NSMutableArray arrayWithContentsOfFile:key];
if(!storageArray)
storageArray = [NSMutableArray arrayWithObject:data];
else
[storageArray addObject:data];
[storageArray writeToFile:key atomically:YES];
Когда я снова загружать изображения я это сделать:
pics = [[NSArray alloc] initWithContentsOfFile:[self dataFilePath]];
ScreenshotViewController *scv = [[ScreenshotViewController alloc]init];
[[self navigationController]pushViewController:scv animated:YES];
NSInteger row = indexPath.row;
[scv setImage:[pics objectAtIndex:row]];
метод путь_файла_данным:
- (NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"screenshots.archive"];
}
Проблема в том, что UIImageView в ScreenshotViewController остается пустым. Я тестировал всевозможные вещи, и это что-то о том, как изображения сохраняются/загружаются в массив, но я не уверен. Я также тестировал, что фактическая часть скриншота работает, сразу же помещая ее в UIImageView и добавляя ее в представление.
ПРИМЕЧАНИЕ: Если я изменить
[scv setImage:[pics objectAtIndex:row]];
к этому
[scv.myUIImageView setImage:[pics objectAtIndex:row]];
я получаю это исключение: [__NSCFData _isResizable]: непризнанные селектор направил к экземпляру 0x847a280.
Каков правильный способ настройки изображения?
Ничего себе он не может испортить, надеюсь, что он будет читабельным.
Это сделал это - спасибо! – Anders