2011-04-14 92 views
1

我是Iphone開發新手,並且需要一個名爲PhotoSelectorViewController的ViewController,它會要求從電話庫中選擇圖片。我知道UIImagePickerController在那裏,但我不知道如何正確使用它。iPhone UIView和UIImagePickerController

我嘗試以下操作:

第一種方法:

  1. 我創建了一個名爲PhotoSelectorViewController用XIB1文件視圖控制器。
  2. 我從xib文件中移除View並將UIImagePickerController添加到列表中。
  3. 我不知道下一步要做什麼,以便在這個ViewController中創建這個類的實例,調用一些init函數。

第二種方法:

  1. 我創造了新的項目,並添加了一個名爲PhotoSelectorViewController視圖控制器,那裏是一個窗口,只有一個UIView。
  2. 關於UIView viewDidLoad函數我正在創建UIImagePickerController的實例並將其添加到視圖中。
  3. 我不知道這個選擇器將如何啓動時,將創建此視圖控制器的實例?

如果可以,請幫助。

回答

2

最簡單的方法是從調用視圖控制器模態地呈現它。

所以,舉例來說,如果你有MyController一個按鈕叫showPhotos

-(IBAction)showPhotos:(id)sender { 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.allowsEditing = YES; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentModalViewController:imagePicker animated:YES]; 
} 

然後,你需要實現

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

在此相同的控制器,因爲它(在我例如)被設置爲代表。

allowsEditing允許用戶在使用前平移,縮放和裁剪圖像。如果您不想允許,請設置爲「否」。

在委託方法中,字典包含結果UIImage。您可以通過獲得

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];,如果你允許編輯。

+0

太好了!你能告訴我如何從這個成功函數中獲取字節的圖像嗎? – Neutralizer 2011-04-14 19:01:47

+0

看看:http://developer.apple.com/library/mac/#qa/qa1509/_index.html只需從UIImage獲取CGImageRef並按照指南操作即可。 – MarkPowell 2011-04-14 19:12:49

1

你的第二個方法是接近,但不它添加到視圖,而不是你需要或者目前UIImagePickerController作爲一個模式視圖控制器,或將其推送到導航堆棧。

想象一下,PhotoSelectorViewControllerUIImagePickerController的啓動器。

的文檔提供一個很好的序列(請參見第1-5靠近頂部):http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html