2013-10-02 3 views
1

Я скриншоты и запись их в файл с этим кодом:Загрузка из файла не работает.

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.

Каков правильный способ настройки изображения?

Ничего себе он не может испортить, надеюсь, что он будет читабельным.

ответ

1

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

UIImage * myPic = [UIImage imageWithData:[pics objectAtIndex:row]]; 

Тогда попробуйте показывая, что изображение

+0

Это сделал это - спасибо! – Anders

Смежные вопросы