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"];
}
問題是,截圖視圖控制器中的UIImageView保持空白。我測試了各種各樣的東西,它是關於圖像保存/加載到陣列中的方式,但我不確定。我還測試了實際的屏幕截圖部分是通過將其放入UIImageView中並將其添加到視圖中來進行工作的。
注: 如果我改變了
[scv setImage:[pics objectAtIndex:row]];
這個
[scv.myUIImageView setImage:[pics objectAtIndex:row]];
我得到這個異常:[__NSCFData _isResizable]:無法識別的選擇發送到實例0x847a280。
什麼是設置圖像的正確方法?
哇,它得到技巧凌亂,希望它的可讀性。
這做到了 - 謝謝! – Anders