我正在为照相制作创建一个简单的相机应用程序。下面的代码是整个项目的示例,我使用的是AVFoundation,因为我需要自己的自定义要求。
当用户按下按钮时,它会拍摄照片并立即在imageView中显示预览。这是我的第一个主要编码项目,也是Objective-C的新手。有没有办法为imageView添加一个计时器或持续时间,以便它从中删除图像,或者在一段时间后循环到第二个黑色图像,为下一个用户准备好拍照?
非常感谢您提出的任何帮助!
if [[ -z "$XTERM_ONCE" ]]
then
export XTERM_ONCE=$(date)
ls
fi
答案 0 :(得分:1)
您可以使用dispatch_after
或NSTimer
来执行此操作。
dispatch_after:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// do something
});
的NSTimer:
[NSTimer scheduledTimerWithTimeInterval:<#delayInSeconds#> target:self selector:@selector(action) userInfo:nil repeats:NO];
- (void)action {
// do something
}
NSTimer
允许您根据需要重复操作,但如果您只是需要交换图像,dispatch_after
会更容易,因为您可以在范围内执行此操作。
[StillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
if (imageDataSampleBuffer != NULL) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [UIImage imageWithData:imageData];
imageView.image = image;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
imageView.image = imageToSwap;
}
}
}];