在过去的5或6个月里,我一直将图像保存到我在用户设备的文档目录中创建的Photos文件夹中。然后,当用户进入特定屏幕时,照片将被加载到imageView中,直到最近这一点已经完美地运行。
现在图像不再显示在图像视图中,并且当使用URL打印图像宽度和高度时,即使URL未更改,值也为零。
我使用以下代码在图像视图中显示图像。
outputImageView = [[UIImageView alloc] init];
[outputImageView setFrame:originalImageViewSize];
outputImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:photoURL]];
NSLog(@"width %f, height %f", outputImageView.image.size.width, outputImageView.image.size.height);
photoURL如下:/ Users / fernandosantos / Library / Developer / CoreSimulator / Devices / 6F3FCE2A-F7F9-4F77-B66D-3DA2A25BE166 / data / Containers / Data / Application / C3867EFA-6AA8-4B71-A856-DCF7F83DEFF0 /文件/ AUDIBURY /照片/ COMMTRCIAL-CSRSignature - 2014-10-13 10-49-16.jpg
由于
答案 0 :(得分:2)
在iOS8中,应用程序文档目录在每次运行时动态更改其名称。您必须使用Appdelegate中的以下方法才能获取当前文档目录路径:
// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
您应该只保存文件的相对路径,而不是完整路径。此方法也适用于iOS7。
您可以使用iOS模拟器并检查实际路径是否确实存在。
答案 1 :(得分:0)
感谢所有回复了建议的人。
我结合了每个人的建议并提出了适合我的解决方案。
//get the documents directory, in iOS 8 this is now dynamic everytime you run the app.
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//Create the CurrentPhotoURL by using the current documents directory and the appending the photo name which
//was created when saving the image originally.
NSString *currentPhotoURL = [[documentsDirectory stringByAppendingString:@"/"] stringByAppendingString:photoName];
由于我在名为Photos的文档目录中创建了一个新文件夹,因此photoName变量保存了Photos文件夹的名称,后跟最初保存时图像的名称。
然后我将photoName变量附加到当前文档目录以获取该照片的完整目录路径。
这可能不是最好的解决方案,但它是我提出的并且有效。
如果其他人需要更多信息,请与我联系。