IOS开发UI基础UIImagePickerController的属性

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];
    });
}

时间: 2024-10-10 21:08:32

IOS开发UI基础UIImagePickerController的属性的相关文章

IOS开发UI基础UITextFidle相关属性

UITextFidle相关属性 •    enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyle 设置边框样式,只有设置了才会显示边框样式   text.borderStyle = UITextBorderStyleRoundedRect; typedef enum {    UITextBorderStyleNone,     UITextBorderStyleLi

IOS开发UI基础UITableView的属性

UITableView UITableView内置了两种样式:UITableViewStylePlain,UITableViewStyleGrouped <UITableViewDataSource,UITableViewDelegate>里的方法: tableView处理步骤 #pragma mark 1.有多少组- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView #pragma mark 2.第section组

IOS开发UI基础 UIDatePicker的属性

UIDatePicker        •    Locale设置DatePicker的地区,即设置DatePicker显示的语言.// 1.跟踪所有可用的地区,取出想要的地区    NSLog(@"%@", [NSLocale availableLocaleIdentifiers]);    // 2. 设置日期选择控件的地区[datePicker setLocale:[[NSLocalealloc]initWithLocaleIdentifier:@"zh_Hans_CN

IOS开发UI基础UIPikerView的属性

UIPikerView的属性 1. numberOfComponents:返回UIPickerView当前的列数NSInteger num = _pickerView.numberOfComponents;NSLog( @"%d", num); 2. - (NSInteger)numberOfRowsInComponent:(NSInteger)component; 返回component列中有多少行.NSInteger numInCp = [_pickerView numberOfR

IOS开发UI基础UITextView相关属性

UITextView相关属性 •    text: 设置textView中文本_textView.text = @"Now is the time for all good developers to come to serve their country.\n\nNow is the time for all good developers to come to serve their country."; // 设置它显示的内容    •    font:设置textView中文字

IOS开发UI基础 UIAlertView的属性

UIAlertView1.Title获取或设置UIAlertView上的标题. 2.Message获取或设置UIAlertView上的消息 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定&q

IOS开发UI基础UIActivityIndicatorView的属性

UIActivityIndicatorView 1.activityIndicatorViewStyle设置指示器的样式UIActivityIndicatorViewStyleWhiteLarge UIActivityIndicatorViewStyleWhite  (默认样式)UIActivityIndicatorViewStyleGray 2.hidesWhenStopped当停止动画的时候,是否隐藏.默认为YES. 3. 实例化指示器对象,根据样式设置尺寸,不需要手动设置.-(id)ini

IOS开发UI基础UIPageControl的属性

UIPageControl    •    numberOfPages // 设置有多少页 默认为0// 2) 设置页数   [pageControl setNumberOfPages:kImageCount];    •    currentPage  // 设置当前页[pageControl setCurrentPage:0]; •    pageIndicatorTintColor // 设置页码指示器颜色 [pageControl setPageIndicatorTintColor:[U

iOS开发UI基础—transframe属性(形变)

iOS开发UI基础-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建"基于控件初始位置"的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建"基于trans