所以我在一个视图上有一个UIImageView。视图上还有一个按钮,用于弹出UIPickerViewController或相机控件。当有人选择一个图像时,它会设置myImageView.image属性并在我的视图中显示该图像。未保存图像...这只是你所选择的东西的展示。
有时,当我在UIPickerViewController中时,我会收到一个内存警告。因为选取器是打开的,所以所有其他不可见的视图,包括我的UIImageView,都会被释放,并且在选取器关闭时再次调用viewDidLoad。这和预期的一样。但在此过程中,我丢失了我显示的图像,因为该图像恢复为其原始的“选择图像”图像占位符。
但是,如何将内存警告之前UIImageView中的图像重新加载到UIImageView中呢?因为它在内存中,所以现在已经丢失了。我不知道它的位置,因为用户从选取器中选择了它,而我只是用下面的代码直接从那里获取它:
itemImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];对如何恢复丢失的图像有什么想法吗?或者我是否应该将它保存在某个变量中,或者保存到设备中,以便在出现内存警告时再次使用??
发布于 2012-04-18 17:59:28
您需要保留对图像的引用,并将其显示在UIImageView中。例如,将其保存在一个名为selectedImage的属性中
.h:
@property (nonatomic, retain) UIImage* selectedImage;图像选择器委派:
self.selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
itemImageView.image = selectedImage;然后,当由于内存不足而卸载itemImageView (以及视图的其余部分)时,您仍将保留图像。在viewDidLoad中,检查是否有应该显示的图像:
if (selectedImage != nil)
itemImageView.image = selectedImage;确保在适合您的应用程序的时候释放selectedImage -例如,当用户超出此屏幕时,或者当他们取消选择此图像时,或者当您将其保存到文件系统时等。
发布于 2012-04-18 13:36:34
是的,如果你有一个用于图像的变量并保留图像,那会更好。
https://stackoverflow.com/questions/10203211
复制相似问题