當我的iPhone應用程序第一次運行時,它會要求您從iPhone庫中選擇一個圖像作爲整個應用程序的背景。下面是相關代碼:在我的應用程序中選擇要用作UIViewController背景的圖像
/*
* 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)];
}
}
我現在該怎麼保存此圖像(或此圖像的引用),這樣我可以用它在我的應用程序爲背景的一些(60%),我UIViewController
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
什麼是最好/最有效/最簡單的方法來做到這一點。我想將圖像保存到NSUserDefaults
,但這看起來不正確,因爲NSUserDefaults
只能用於小物體。我應該將它保存到磁盤嗎?但是,我的應用程序不會真的很慢,每次我都會從磁盤讀取數據? (如果這是正確的方式,我將如何做到這一點?)
我注意到你打上一個答案是正確的。沒有必要改變它,但考慮一下,如果你繼承的唯一原因是獲取背景顏色,那麼可以使用外觀協議同樣高效地(並且沒有額外的子類)完成它:[[UIView外觀] setBackgroundColor: [UIColor colorWithPatternImage:img]]; (或者當包含的時候可能對你更有意義)。 – danh
這是否適用於所有ViewControllers? – Nosrettap
對所有的意見。您可以通過使用whenContainedIn變體來縮小這些範圍。 – danh