我注意到在OS 3.1中你可以用图像选择器添加叠加视图
cameraOverlayView
Run Code Online (Sandbox Code Playgroud)
但是,我还注意到,通过此方法添加视图还会显示UIImagePicker显示的整个时间的视图,当我只想在预览阶段显示它时.
有没有办法让这个只在预览期间发生?在开放式快门动画期间,或者询问您是否要使用图像或重拍时,我不希望它出现在那里.
在相机工作流程中,照片被捕获,在下一个屏幕上,我们称之为选择屏幕,您可以选择是否要使用此照片或重新拍摄.
当相机进入预览视图时,我怎么知道?
我的问题是我添加了一个按钮来访问相机胶卷,效果很好.拍摄照片并进入预览视图(2.相机视图)时,按钮隐藏了"使用照片"选项.所以我不能选择它.我想在进入预览视图时隐藏按钮,或者只是避开预览视图.

在我的代码下面
#import <UIKit/UIKit.h>
#import "CameraViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>
@interface CamViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIImage *image;
@property (nonatomic, strong) UIImage *lastTakenImage;
- (IBAction)takePhoto:(id)sender;
- (IBAction)selectPhoto:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
#import "CamViewController.h"
@interface CamViewController ()
@end
@implementation CamViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
int isAction = 0; // Photo, 1: CameraRoll, …Run Code Online (Sandbox Code Playgroud) 在拍摄照片后进行编辑(移动和缩放)在我的应用程序中使用此行正常工作:
[imagePicker setAllowsEditing:YES];
Run Code Online (Sandbox Code Playgroud)
但如果我也使用cameraOverlayView,则编辑模式不再起作用.屏幕出现,但平移和捏动手势不会发生任何事情.
我正在使用你的普通图像选择器控制器:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
Run Code Online (Sandbox Code Playgroud)
我添加了一个相机覆盖视图,从自定义视图控制器的视图创建:
CameraOverlayViewController *overlayController = [[CameraOverlayViewController alloc] init];
UIView *overlayView = overlayController.view;
[imagePicker setCameraOverlayView:overlayView];
Run Code Online (Sandbox Code Playgroud)
在IB中,该视图被设置为允许用户交互和多次触摸,这允许其在拍摄照片时进行缩放和聚焦.但是一旦拍摄照片并进入编辑模式,您就无法平移或捏合移动或缩放照片.
我错过了什么?
我使用标准图像选择器制作一些相机照片.
当用户制作照片时,图像选择器会向他显示预览屏幕,其中有2个按钮" 重新拍摄 "和" 使用 ".
如何检测预览屏幕现在是否处于活动状态或按下"重拍"按钮? 可能吗 ?有用的属性或事件是什么?像图像源是库的属性 - 允许编辑,显示类似的屏幕.
UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
Run Code Online (Sandbox Code Playgroud)