当我的iPhone应用程序第一次运行时,它会要求您从iPhone库中选择一张图像作为整个应用程序的背景。以下是相关代码:
/*
* Responds when an image is selected (from browsing)
*/
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
{
//Not really sure what to do here
UIImage *image = [[UIImage alloc] initWithData:UIImageJPEGRepresentation([info objectForKey:UIImagePickerController], .2)];
}
}
我现在要保存此图片(或对此图片的引用),以便我可以在整个应用中使用它作为UIViewController
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
什么是最好/最有效/最简单的方法。我考虑将图像保存到NSUserDefaults
但这似乎不对,因为NSUserDefaults
仅适用于小对象。我应该把它保存到磁盘吗?但是,每次我发布时,我的应用程序都不会非常慢地从磁盘读取? (如果这是正确的方法,我该怎么做?)
答案 0 :(得分:3)
将您的图像存储在文档目录中 保存图像
- (void)saveImage:(UIImage *)image {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
// Convert to Data
NSData *imageData = UIImagePNGRepresentation(image);
// write to file
[imageData writeToFile:savedImagePath atomically:NO];
}
阅读图像使用以下
- (UIImage *)getImage {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
return img;
}
答案 1 :(得分:1)
使用子类UIViewController,其中背景总是这个选定的背景图像,您可以使用下面的@ Dipen建议(以及+1给他)保存。
从字面上看,新视图控制器中唯一需要存在的是,在它的“viewDidLoad:
”方法中,您添加了一个“UIImageView
”的子视图,设置为您的背景图像你攒下了一些偏好。
然后,您可以从新的“NosetrapViewController
”继承其他视图控制器,这将自动选取所选的背景图像。