UIImagePickerController的编辑模式怎么设置裁剪框的大小或形状

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIImagePickerController的编辑模式怎么设置裁剪框的大小或形状相关的知识,希望对你有一定的参考价值。

UIImagePickerController是系统提供的用来获取图片和视频的接口;用UIImagePickerController类来获取图片视频,大体分为以下几个步骤:1.初始化UIImagePickerController类;2.设置UIImagePickerController实例的数据来源类型(下面解释);3.设置设置代理;4.如果需要做图片修改的话设置allowsEditing=yes。数据来源类型一共有三种:enumUIImagePickerControllerSourceTypePhotoLibrary,//来自图库UIImagePickerControllerSourceTypeCamera,//来自相机UIImagePickerControllerSourceTypeSavedPhotosAlbum//来自相册;在用这些来源的时候最好检测以下设备是否支持;if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])NSLog(@"支持相机");if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])NSLog(@"支持图库");if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])NSLog(@"支持相片库");调用摄像头来获取资源-(void)viewDidLoad[superviewDidLoad];picker=[[UIImagePickerControlleralloc]init];picker.view.backgroundColor=[UIColororangeColor];UIImagePickerControllerSourceTypesourcheType=UIImagePickerControllerSourceTypeCamera;picker.sourceType=sourcheType;picker.delegate=self;picker.allowsEditing=YES;上面只是实例了UIImagePickerController及其属性在需要获取图片的时候需要弹出窗口调用[selfpresentViewController:pickeranimated:YEScompletion:nil];我们还需要代理来获取我们选中的图片UIImagePickerControllerDelegate代理中一共三个方法其中一个3.0已经废弃了,只剩下两个我们需要用的-(void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info;当用户选取完成后调用;-(void)imagePickerControllerDidCancel:(UIImagePickerController*)picker;当用户取消选取时调用;-(void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info;选取的信息都在info中,info是一个字典。字典中的键:NSString*constUIImagePickerControllerMediaType;指定用户选择的媒体类型(文章最后进行扩展)NSString*constUIImagePickerControllerOriginalImage;原始图片NSString*constUIImagePickerControllerEditedImage;修改后的图片NSString*constUIImagePickerControllerCropRect;裁剪尺寸NSString*constUIImagePickerControllerMediaURL;媒体的URLNSString*constUIImagePickerControllerReferenceURL;原件的URLNSString*constUIImagePickerControllerMediaMetadata;当来数据来源是照相机的时候这个值才有效UIImagePickerController的参数参考这里。代理中的功能参考这里。UIImagePickerControllerMediaType包含着KUTTypeImage和KUTTypeMovieKUTTypeImage包含:constCFStringRefkUTTypeImage;抽象的图片类型constCFStringRefkUTTypeJPEG;constCFStringRefkUTTypeJPEG2000;constCFStringRefkUTTypeTIFF;constCFStringRefkUTTypePICT;constCFStringRefkUTTypeGIF;constCFStringRefkUTTypePNG;constCFStringRefkUTTypeQuickTimeImage;constCFStringRefkUTTypeAppleICNSconstCFStringRefkUTTypeBMP;constCFStringRefkUTTypeICO;KUTTypeMovie包含:constCFStringRefkUTTypeAudiovisualContent;抽象的声音视频constCFStringRefkUTTypeMovie;抽象的媒体格式(声音和视频)constCFStringRefkUTTypeVideo;只有视频没有声音constCFStringRefkUTTypeAudio;只有声音没有视频constCFStringRefkUTTypeQuickTimeMovie;constCFStringRefkUTTypeMPEG;constCFStringRefkUTTypeMPEG4;constCFStringRefkUTTypeMP3;constCFStringRefkUTTypeMPEG4Audio;constCFStringRefkUTTypeAppleProtectedMPEG4Audio; 参考技术A 编辑界面下,点击编辑选项面板上的“剪裁”,出现参数调节选项,同时照片上出现裁剪框: 可以通过改变裁剪框的位置和大小选择图片的裁剪区域。 裁剪结束后,点击“应用”按钮保留此次修改,或点击“取消”按钮忽略此次修改,点击后调节选项收起。

UIImagePickerController、自定义 UIButton 和 AutoLayout

【中文标题】UIImagePickerController、自定义 UIButton 和 AutoLayout【英文标题】:UIImagePickerController, custom UIButton and AutoLayout 【发布时间】:2014-10-10 21:05:05 【问题描述】:

我正在尝试使用自动布局约束将自定义按钮放入 UIImagePickerController。

- (void)createTimerButtonFor:(UIImagePickerController*)picker

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"Timer" forState:UIControlStateNormal];
NSLayoutConstraint* constraint1 = [NSLayoutConstraint constraintWithItem:picker.view attribute:NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];

NSLayoutConstraint* constraint2 = [NSLayoutConstraint constraintWithItem:picker.view attribute:NSLayoutAttributeTop relatedBy: NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeTop multiplier:1 constant:0];

NSLayoutConstraint *heightConstraint =
[NSLayoutConstraint constraintWithItem:button
                             attribute:NSLayoutAttributeHeight
                             relatedBy:NSLayoutRelationEqual
                                toItem:nil
                             attribute:NSLayoutAttributeNotAnAttribute
                            multiplier:1.0
                              constant:100.0];
NSLayoutConstraint *widthConstraint =
[NSLayoutConstraint constraintWithItem:button
                             attribute:NSLayoutAttributeWidth
                             relatedBy:NSLayoutRelationEqual
                                toItem:nil
                             attribute:NSLayoutAttributeNotAnAttribute
                            multiplier:1.0
                              constant:100.0];


[picker.view addSubview:button];

[picker.view addConstraint:constraint1];
[picker.view addConstraint:constraint2];
[button addConstraint:heightConstraint];
[button addConstraint:widthConstraint];

甚至可以这样做吗?我做错了吗?

【问题讨论】:

您能解释一下您希望按钮的确切位置吗?它以什么方式不起作用(例如“按钮没有显示”或“按钮不在正确的位置”)?此外,在应用引用它们的约束之前,约束中涉及的视图必须位于视图层次结构中。你应该得到一个异常或至少一个日志输出。 【参考方案1】:

Dzior,我认为将按钮添加到选择器视图并让自动布局为您定位它会很困难。我想也许它没有完全使用自动布局。

我试图禁止它旋转,但在 iOS 8 之前的所有技巧在 iOS 8 上都无法正常工作。

创建叠加视图并将按钮放入叠加视图会更容易,因为您可以完全控制叠加视图类。

【讨论】:

以上是关于UIImagePickerController的编辑模式怎么设置裁剪框的大小或形状的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController、自定义 UIButton 和 AutoLayout

UIImagePickerController 实况照片

OCMock 模拟 UIImagePickerController

UIImagePickerController 图像没有改变

无法弹出 UIImagePickerController

为啥 UIImagePickerController 不能推入导航栈?