【问题标题】:Display screen flash like the iOS camera app显示屏幕闪烁,如 iOS 相机应用程序
【发布时间】:2014-11-07 02:42:52
【问题描述】:

我想在原生 iOS 相机应用中实现类似的功能 - 当我用户拍照时,屏幕会瞬间变暗。

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

这里有一些代码:

顶部:

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

展示相机:

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)

}

Flash Screen:用户拍照时调用

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

【问题讨论】:

  • 我注意到flashView.alpha = 0.0,这意味着它是透明的。这不应该是 1.0 吗?
  • 天哪,可能就是这样吧。我回家后会试试的。谢谢:)
  • @rFessler。那行得通!非常感谢。如果您将其写为答案,我将提交。

标签: ios objective-c iphone swift


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2015-04-01
    相关资源
    最近更新 更多