显示屏幕闪光像iOS相机应用程序

问题描述:

我想实施类似于在本机iOS相机应用程序中完成的东西 - 当我用户拍摄照片时,屏幕瞬间闪烁一下。显示屏幕闪光像iOS相机应用程序

我正在使用带有叠加层的UIImagePicker,并且想要在顶部添加第二个视图。

下面是一些代码:

TOP:

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, 
        UIGestureRecognizerDelegate { 
var cameraUI:UIImagePickerController = UIImagePickerController() 
var overlay:UIImageView! 

呈现CAMERA:

func presentCamera() 
{ 
    cameraUI = UIImagePickerController() 
    cameraUI.delegate = self 
    cameraUI.sourceType = UIImagePickerControllerSourceType.Camera 
    cameraUI.mediaTypes = [kUTTypeImage] 
    cameraUI.allowsEditing = false 
    cameraUI.showsCameraControls = false 

    var translate = CGAffineTransformMakeTranslation(0.0, 71.0); //This slots the preview exactly in the middle of the screen by moving it down 71 points 
    cameraUI.cameraViewTransform = translate; 

    var scale = CGAffineTransformScale(translate, 1.333333, 1.333333); 
    cameraUI.cameraViewTransform = scale; 


    self.presentViewController(cameraUI, animated: true, completion: nil) 
    overlay = UIImageView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)) 
    var image = UIImage(named: "bg.png") 
    overlay.image = image 
    overlay.userInteractionEnabled = true 
    overlay.alpha = 1.0 
    cameraUI.cameraOverlayView = overlay 

    let recognizer = UITapGestureRecognizer(target: self, action:Selector("tapped:")) 
    recognizer.delegate = self 
    recognizer.numberOfTapsRequired = 1 
    overlay.addGestureRecognizer(recognizer) 

} 

闪存屏幕:调用时用户拍照

func flashScreen() { 
    let flashView : UIView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)) 
    flashView.alpha = 0.0 
    flashView.backgroundColor = UIColor.blackColor() 

    print("flash") 

    overlay.addSubview(flashView) 
//  self.view.addSubview(flashView) doesn't work either 

我没有看到任何事摹

我也试图改变这似乎没有工作覆盖图像之一:

//  overlay.alpha = 0.0 
//  overlay.image = UIImage(named: "flash.png") 
//  cameraUI.cameraOverlayView = overlay 
+1

我注意到'flashView.alpha = 0.0',这意味着它是透明的。这不应该是1.0吗? – 2014-11-07 19:38:12

+0

哦,男孩,可能是这样吧。当我回家时我会尝试。谢谢:) – Jonovono 2014-11-07 20:21:37

+0

@rFessler。这工作!非常感谢。如果你把它写成答案,我会提交。 – Jonovono 2014-11-08 00:09:15

我注意到flashView.alpha = 0.0,这意味着它是透明的。将其设置为1.0。