我尝试录制视频.我收到的消息来自设备上的以下代码:
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.allowsEditing = YES;
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
imagePickerController.delegate = self;
[self presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我认为录制视频应该很容易.当我启动手机的"相机"应用程序时,我可以选择视频和图片.它不应该也适用于我的应用程序吗?
提前10倍,Danail
我在UIPopoverController中使用UIImagePickerController,它与iOS6完美配合.使用iOS 7时,显示捕获图像的"预览"图像会旋转,但如果我拍照,则会正确保存.
这就是我选择的方式:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = NO;
Run Code Online (Sandbox Code Playgroud)
并将其添加到弹出控制器:
self.imagePickerPopOver = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[self.imagePickerPopOver presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0) inView:self.detailViewController.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Run Code Online (Sandbox Code Playgroud)
这些是UIScrollView上按钮位置的计算,以显示正确位置的弹出窗口:
presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0)
Run Code Online (Sandbox Code Playgroud)
我不认为问题就在那里,因为我尝试了几种组合.
我还尝试在全屏模式下捕获图像,但应用程序只允许使用横向模式.如果以纵向模式拍摄图像并且取消模态视图,则应用程序也将保持纵向模式.如果模态视图被解除,我找不到阻止UIImagePickerController切换到纵向模式或强制应用程序回到横向模式的方法.
UPDATE
我从这里得到了答案,又向前迈进了一步.
我在创建选择器之后和显示弹出窗口之前转换视图:
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(M_PI/2);
break;
case UIInterfaceOrientationLandscapeRight:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
只要我不转动iPad,它就能正常工作.为此,我正在注册方向更改事件:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
并更改选择器视图:
- …Run Code Online (Sandbox Code Playgroud) uiimagepickercontroller uipopovercontroller uiinterfaceorientation ios ios7
当我尝试从我的代码加载相机时,相机预览为黑色.如果我等待10-20秒,它将显示真实的相机预览.我发现了几个问题,其中一些问题表明在后台运行其他代码应该是这个问题的原因.但是我没有在后台运行任何代码.我该怎么解决这个问题?
这是我运行相机的代码
UIImagePickerController *photoPicker = [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:photoPicker animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud) 为UIImagePickerController的导航栏着色的正确方法是什么?
我只是试图看到背景颜色,但我得到一种褪色的颜色,如下图所示; 好像有些观点阻碍了它.
let picker = UIImagePickerController()
picker.sourceType = type
picker.mediaTypes = [kUTTypeImage]
picker.delegate = self
picker.navigationBar.backgroundColor = UIColor.redColor()
Run Code Online (Sandbox Code Playgroud)

它似乎有一些视图模糊redColor():
(lldb) po picker.navigationBar.subviews
2 values
{
[0] = 0x00007fe7bb52a890
[1] = 0x00007fe7bb52b670
}
Run Code Online (Sandbox Code Playgroud)
为导航栏创建纯色的正确方法是什么?
当打开使用UIImagePickerController并设置allowsImageEditing = YES时; 有一个320x320的默认裁剪框.在我的情况下,我想将裁剪框架设置为320x240用于横向图像,240x320用于纵向图像.但是,我还没有找到一种方法来更改编辑/裁剪照片时使用的320x320帧.你有没有找到办法做到这一点?
谢谢!
我认为我在最新的iOS 7中发现了一个错误,它运行的应用程序将Base SDK设置为iOS 6.1(可能甚至更低版本,还没有测试过)
我的照片库中有这张图片:http://i.imgur.com/7KUIGLt.jpg
我通过以下方式呈现UIImagePickerController:
UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
vc.delegate = self;
vc.allowsEditing = YES;
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
我将所选图像保存到我的桌面(我在模拟器上运行它,但这也适用于设备)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage];
if (outputImage == nil) {
outputImage = [info objectForKey:UIImagePickerControllerOriginalImage];
}
NSData *d = UIImagePNGRepresentation(outputImage);
[d writeToFile:@"/Users/Admin/Desktop/test.png" atomically:YES];
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
这是结果图像:

注意右边的大黑条.是什么导致了这个?
要重现这一点,您需要:
注意:为了清楚起见,黑条是实际图像的一部分.你看到的图像没有UIImageView的截图,但是实际的图像保存到磁盘并在这里上传...
有没有办法使用相机图像选择器定义裁剪区域rect?
我正在从iphone应用程序中的照片库中选择一个图像.我将如何检索实际图像名称.
在.h班
UIImageView * imageView;
UIButton * choosePhotoBtn;
Run Code Online (Sandbox Code Playgroud)
在.m级
-(IBAction) getPhoto:(id) sender
{
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if((UIButton *) sender == choosePhotoBtn)
{
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
else
{
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
[self presentModalViewController:picker animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}
Run Code Online (Sandbox Code Playgroud)
我如何获得图像的实际名称?
我是iphone的新手.请帮我.
提前致谢.
在iOS 15之前,我使用 UIImagePickerController 来捕获图像和视频,并从 中获取了 mediaType [UIImagePickerController.InfoKey : Any],然后我使用了kUTTypeImage(在MobileCoreServices库中)来识别mediaType。
然而,当谈到 iOS 15 时,Xcode 抱怨说,kUTTypeImage was deprecated in iOS 15.0. Use UTTypeImage instead.所以,我替换kUTTypeImage为UTTypeImage,但 Xcode 不知道。
尝试搜索一些信息,但没有得到任何线索。我想我应该导入正确的库,但它是什么?
\n这是部分代码\xef\xbc\x9a
\nfunc imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {\n guard let mediaType = info[.mediaType] as? String else { return }\n switch mediaType {\n case String(kUTTypeImage):\n // blabla\n case String(kUTTypeMovie):\n // blabla\nRun Code Online (Sandbox Code Playgroud)\n\n\n 我正在尝试使用UIImagePickerController获取从库中拾取的视频的缩略图.
这是我的代码.如果我使用相机录制视频,我可以获得视频的缩略图.但是如果我从图书馆中获取视频,我就无法获得缩略图.谁知道为什么?
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
NSURL *mediaUrl = [info objectForKey:UIImagePickerControllerMediaURL];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaUrl];
moviePlayer.shouldAutoplay = NO;
UIImage *thumbnail = [[moviePlayer thumbnailImageAtTime:0.0 timeOption:MPMovieTimeOptionNearestKeyFrame] retain];
[imageView setImage:thumbnail]; //imageView is a UIImageView
[moviePlayer release];
[thumbnail release];
[self dismissModalViewControllerAnimated:YES];
}
}
Run Code Online (Sandbox Code Playgroud) ios ×6
iphone ×3
objective-c ×3
cocoa-touch ×2
crop ×2
ios7 ×2
swift ×2
thumbnails ×1
video ×1