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
OCMock 模拟 UIImagePickerController