gpt4 book ai didi

ios - 从在 iOS 8 中工作但在 iOS 7 中不工作的已保存屏幕截图设置 UIImageView 图像

转载 作者:行者123 更新时间:2023-11-29 12:32:57 25 4
gpt4 key购买 nike

我制作了一个应用程序,可以将设备的屏幕截图保存到应用程序的文档目录中。

然后这个 UIImageView 读取保存的屏幕截图图像并显示它。到目前为止一切都很好。但是等一下,这在 iOS 8 上工作得很好,但它在 iOS 7 上根本不显示任何东西,无论是模拟器还是设备。

于是调查发现iOS 8将图片保存到如下目录(Simulator on OS X):

/Users/SunburstEnzo/Library/Developer/CoreSimulator/Devices/AE8252CE-38C1-4D81-BA87-34F50E743AEC/data/Containers/Data/Application/34562F4C-5DED-4F1C-9CB6-92948B6C5F89/Documents/2014-11-26-11-12-24.png

虽然 iOS 7 将它保存到这里:

/Users/SunburstEnzo/Library/Developer/CoreSimulator/Devices/CE8E7B90-F00F-441B-8E70-17E968AB7AF7/data/Applications/994CD541-2730-4E32-93CD-23B9F996C2E3/Documents/2014-11-26-11-12-51.png

我知道这与它有关,但是当我引用它时,它可以很好地看到图像,只是在将它放到屏幕上时遇到了问题。我知道我所做的工作(在 iOS 8 上)所以代码没问题,但我需要一个解决此错误的方法。

此外,无论我的问题是什么,都应该类似于这个问题关于转换为使用 App Container 的问题(注意:保存图像对我来说没问题,只是显示它)——saving image to documents directory no longer works iOS8

Tl;dr iOS 7 中的错误阻止显示保存在 Documents 目录中的图像,在 iOS 8 上工作正常,帮我解决这个问题

我的代码:

将屏幕截图写入文档目录: UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *sourceImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

//UIImageWriteToSavedPhotosAlbum(sourceImage,nil, nil, nil);


NSData *pngData = UIImagePNGRepresentation(sourceImage);

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory

NSError * error;
NSArray * directoryContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:documentsPath error:&error];

NSString *dateString;
NSDate *now = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd-HH-mm-ss"];
dateString = [dateFormatter stringFromDate:now];


NSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",dateString]]; //Add the file name

[pngData writeToFile:filePath atomically:YES]; //Write the file

要阅读的代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory


NSError * error;
NSArray * directoryContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:documentsPath error:&error];

directoryContentsPopover = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:documentsPath error:&error];

NSLog(@"Number of images: %d",directoryContents.count);

if (directoryContentsPopover.count > 0) {

self.mainImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@/%@",documentsPath,directoryContentsPopover[0]]];

NSLog(@"At least 1 image; Image location: %@/%@",documentsPath,directoryContentsPopover[0]);
}

****尼克·洛克伍德的回答****

替换

self.mainImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@/%@",documentsPath,directoryContentsPopover[0]]];

self.mainImageView.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@",documentsPath,directoryContentsPopover[0]]];

最佳答案

您正在尝试使用 [UIImage imageNamed:] 加载图像,但此方法仅适用于您的应用程序包或 XCAssets 中的图像,它不接受任意文件路径。

改用 [UIImage imageWithContentsOfFile:]。

关于ios - 从在 iOS 8 中工作但在 iOS 7 中不工作的已保存屏幕截图设置 UIImageView 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27149501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com