0

感谢您的阅读,我正在制作一个相机计时器应用程序,当计时器达到 0 时,意味着要拍摄一张照片。然而,事实并非如此。:C。

这里是为我的新控件显示 PickerController 和 Overlay 的代码。(ViewDidLoad 方法加载它还为时过早。)

-(void)viewDidAppear:(BOOL)animated{
    overlayView.hidden = false;
imagePicker = [[UIImagePickerController  alloc] init];
imagePicker.delegate = self;
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[self presentViewController:imagePicker animated:YES completion:NULL];
imagePicker.showsCameraControls = NO;
imagePicker.cameraOverlayView = overlayView;

}

这里是计时器达到 0 并且要拍照的代码。

//cameraTimeInt is the timer//
if(cameraTimeInt ==0){

//timerDisplay is the picture displaying the countdown to 0//
        [timerDisplay setImage:NULL];

        [imagePicker takePicture];



    }

这是您单击“拍照”按钮时的代码。

-(IBAction)takePicture:(id)sender {




    cameraTimeInt = timeSlider.value;



    NSTimer *timerStart = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerTickStart:) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timerStart forMode:NSDefaultRunLoopMode];



}

我知道代码有点草率,但如果有人有任何想法,将不胜感激:)

另外我得到的错误是:

CameraTimer[392:907] UIImagePickerController:忽略拍照请求;图像已被捕获或相机尚未准备好。

它似乎正在尝试拍摄两张图像,因为我听到了两次咔嗒声(相机拍摄照片噪音)。

4

2 回答 2

0

已编辑

    UIImageWriteToSavedPhotosAlbum(_imgView.image, nil, nil, nil);
于 2013-01-28T09:23:52.770 回答
0

在你的情况下,NSTimer拍照的时间很早。因此,将其更改为7 秒 ,因为它可能在所有组件初始化过程中拍照。

-(IBAction)takePicture:(id)sender {

    cameraTimeInt = timeSlider.value;

    NSTimer *timerStart = [NSTimer scheduledTimerWithTimeInterval:7 target:self selector:@selector(timerTickStart:) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timerStart forMode:NSDefaultRunLoopMode];

}
于 2013-01-28T09:27:48.587 回答