2013-10-02 2 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]]; 

dataFilePath 방법 :

- (NSString *)dataFilePath 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return [documentsDirectory stringByAppendingPathComponent:@"screenshots.archive"]; 
} 

을 문제는 ScreenshotViewController의 UIImageView가 비어 있다는 것입니다. 나는 모든 종류의 것들을 테스트했으며 이미지가 배열에 저장되거나로드되는 방식에 관한 것이지만 확실하지는 않습니다. 또한 UIImageView에 바로 넣고 뷰에 추가하여 실제 스크린 샷 부분이 작동하는지 테스트했습니다. 나는이 예외를 얻을이

[scv.myUIImageView setImage:[pics objectAtIndex:row]]; 

[scv setImage:[pics objectAtIndex:row]]; 

을 변경하는 경우 :

주 [__NSCFData _isResizable] : 인식 할 수없는 선택기 예를 0x847a280로 전송.

이미지를 올바르게 설정하는 방법은 무엇입니까?

와우, 지저분한 지저분하고, 읽을 수 있기를 바랍니다.

답변

1

읽기/쓰기 코드가 맞다고 가정하면 이미지를 PNG로 저장합니다. 읽을 때 따라서,이 같이있는 UIImage을 만들어야합니다 :

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

그런 다음 그 이미지를했다

+0

보여주는 시도 - 감사합니다! – Anders

관련 문제