IOS開發UI基礎UIImagePickerController的屬性

來源:互聯網
上載者:User

標籤:

UIImagePickerController


1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;                 檢查指定源是否在裝置上可用。
//檢查照片源是否可用
[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]

2.allowsEditing 預設NO
是否允許編輯
允許編輯.
[imagePicker setAllowsEditing:YES];


3. videoMaximumDuration
?設定UIImagePicker的最大視頻期間.預設10分鐘


4. + availableMediaTypesForSourceType: // 指定源可用的媒體種類
 //獲得相機模式下支援的媒體類型
NSArray* availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];


5. sourceType
設定UIImagePicker照片源類型,預設有3種。
照片源類型
 
 UIImagePickerControllerSourceTypeCamera            照相機
 UIImagePickerControllerSourceTypePhotoLibrary      照片庫(通過同步存放的,使用者不能刪除)
 UIImagePickerControllerSourceTypeSavedPhotosAlbum  儲存的照片(通過拍照或者截屏儲存的,使用者可以刪除)

6.UIImagePicker使用步驟:
?    檢查指定源是否可用. isSourceTypeAvailable:方法.?    檢查可用媒體(視頻還是只能是圖片) availableMediaTypesForSourceType:方法.?    設定介面媒體屬性mediaTypes property.?    顯示介面使用presentViewController:animated:completion:方法.iPad中是popover形式.需要確保sourceType有效. ?    相關操作,移除視圖. ???如果想建立一個完全自訂介面的image picker來瀏覽圖片,使用 Assets Library Framework Reference中的類. (AV Foundation Programming Guide 中的 “Media Capture and Access to Camera” )?? ??


7.設定源?
?    + availableMediaTypesForSourceType: // 指定源可用的媒體種類?    + isSourceTypeAvailable: // 指定源是否在裝置上可用?      sourceType ??// 運行相關介面前需要指明源類型.必須有效,否則拋出異常. picker已經顯示的時候改變這個值,picker會相應改變來適應.預設 UIImagePickerControllerSourceTypePhotoLibrary.??


8.設定picker屬性?
?      allowsEditing //是否可編輯?      delegate ?      mediaTypes ??// 指示picker中顯示的媒體類型.設定每種類型之前應用availableMediaTypesForSourceType:檢查一下.如果為空白或者array中類型都不可用,會發生異常.預設 kUTTypeImage, 只能顯示圖片.??   

 ?
9.video選取參數
??      videoQuality //視頻拍攝選取時的編碼品質.只有mediaTypes包含kUTTypeMovie時有效.?      videoMaximumDuration //秒,video最大記錄時間,預設10分鐘.只用當mediaTypes包含kUTTypeMovie時有效.

??
10.自訂介面
??      showsCameraControls ??// 指示 picker 是否顯示預設的camera controls.預設是YES,設定成NO隱藏預設的controls來使用自訂的overlay view.(從而可以實現多選而不是選一張picker就dismiss了).只有 UIImagePickerControllerSourceTypeCamera源有效,否則NSInvalidArgumentException異常.??      cameraOverlayView ??//自訂的用於顯示在picker之上的view.只有當源是UIImagePickerControllerSourceTypeCamera時有效.其他時候使用拋出NSInvalidArgumentException異常.??      cameraViewTransform ??//預先動畫.隻影響預先映像,對自訂的overlay view和預設的picker無效.只用當picker的源是UIImagePickerControllerSourceTypeCamera時有效,否則NSInvalidArgumentException異常.??


11.選取媒體
??    – takePicture ??//使用網路攝影機選取一個圖片。自訂overlay可以多選。已經有圖片正在選取是調用無效,必須要等delegate收到 imagePickerController:didFinishPickingMediaWithInfo:訊息後才能再次選取。非UIImagePickerControllerSourceTypeCamera源會導致異常。??    – startVideoCapture ??    – stopVideoCapture ??//結束視頻選取,之後系統調用delegate的 imagePickerController:didFinishPickingMediaWithInfo:方法。

??
12.設定網路攝影機
?      cameraDevice //使用的鏡頭(預設後置的)?    + isCameraDeviceAvailable: // 攝像裝置是否可用.?    + availableCaptureModesForCameraDevice: // 裝置可用的選模數式 ?      cameraCaptureMode //相機捕獲模式?      cameraFlashMode //閃光燈模式(預設自動)?    + isFlashAvailableForCameraDevice: // 是否有閃光能力??


13.UIImagePickerControllerDelegate


使用UIImageWriteToSavedPhotosAlbum儲存映像,

UISaveVideoAtPathToSavedPhotosAlbum儲存視頻. 4.0後使用writeImageToSavedPhotosAlbum:metadata:completionBlock:儲存中繼資料.??    

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info??//包含選擇的圖片或者一個視頻的URL,詳見“Editing Information Keys.”??//如果是設定可編輯屬性,那麼picker會預顯示選中的媒體,編輯後的與初始的都會儲存在info中.??    

– imagePickerControllerDidCancel:?    – imagePickerController:didFinishPickingImage:editingInfo://Deprecated in iOS 3.0

??NSString *const UIImagePickerControllerMediaType;// 媒體類型?

NSString *const UIImagePickerControllerOriginalImage;// 原始未編輯的映像

?NSString *const UIImagePickerControllerEditedImage;// 編輯後的映像

?NSString *const UIImagePickerControllerCropRect;// 源映像可編輯(有效?)地區?

NSString *const UIImagePickerControllerMediaURL;// 視頻的路徑

?NSString *const UIImagePickerControllerReferenceURL;// 原始選擇項的URL

?NSString *const UIImagePickerControllerMediaMetadata;// 只有在使用網路攝影機並且是映像類型的時候有效.包含選擇映像資訊的字典類型?


14. UIImagePickerController小例子
UIImagePickerController的代理需要遵守這兩個協議.<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

#pragma mark 選擇照片
- (void)selectPhoto
{
    // 1. 首先判斷照片源是否可用
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        
        // 0)執行個體化控制器
        UIImagePickerController *picker = [[UIImagePickerController alloc]init];
        // 1)設定照片源
        [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
        
        // 2) 設定允許修改
        [picker setAllowsEditing:YES];
        // 3) 設定代理
        [picker setDelegate:self];
        // 4) 顯示控制器
        [self presentViewController:picker animated:YES completion:nil];
        
    } else {
        NSLog(@"照片源不可用");
    }
    
}

#pragma mark - imagePicker代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = info[@"UIImagePickerControllerEditedImage"];
    [_imageButton setImage:image forState:UIControlStateNormal];
    
    // 關閉照片選取器
    [self dismissViewControllerAnimated:YES completion:nil];
    
    // 需要將照片儲存至應用程式沙箱,由於涉及到資料存放區,同時與介面無關
    // 可以使用多線程來儲存映像
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        // 儲存映像
        // 1. 取映像路徑
        NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *imagePath = [docs[0]stringByAppendingPathComponent:@"abc.png"];
        
        // 2. 轉換成NSData儲存
        NSData *imageData = UIImagePNGRepresentation(image);
        [imageData writeToFile:imagePath atomically:YES];
    });
}


IOS開發UI基礎UIImagePickerController的屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.