代码之家  ›  专栏  ›  技术社区  ›  bigredfro

swift-保存画中画应用程序[副本]

  •  0
  • bigredfro  · 技术社区  · 9 年前

    我制作了一个iPhone应用程序,用户可以在其中拍照。我需要在代码中放入什么,以便用户拍照时将照片保存到用户库?

    下面是我迄今为止的代码

    导入UIKit 导入AVFoundation

    类ViewController:UIViewController、UIImagePickerControllerDelegate、UINavigationController Delegate{

    var picker = UIImagePickerController()
    
    @IBOutlet var camera: UIButton!
    
    
    
    @IBAction func camera(sender: UIButton) {
    
    
            if UIImagePickerController.availableCaptureModesForCameraDevice(.Rear) != nil {
                picker = UIImagePickerController() //make a clean controller
                picker.allowsEditing = false
                picker.sourceType = UIImagePickerControllerSourceType.Camera
                picker.cameraCaptureMode = .Photo
                picker.showsCameraControls = true
    
                //customView stuff
                let customViewController = CustomOverlayViewController(
                    nibName:"CustomOverlayViewController",
                    bundle: nil
                )
    
    
                let customView:CustomOverlayView = customViewController.view as! CustomOverlayView
                customView.frame = self.picker.view.frame
    
                customView.cameraLabel.text = "Hello Cute Camera"
    
    
                picker.modalPresentationStyle = .FullScreen
                presentViewController(picker,animated: true,completion: {
                        self.picker.cameraOverlayView = customView
                    }
                )
    
    
    
    
            } else { //no camera found -- alert the user.
                let alertVC = UIAlertController(
                    title: "No Camera",
                    message: "Sorry, this device has no camera",
                    preferredStyle: .Alert)
                let okAction = UIAlertAction(
                    title: "OK",
                    style:.Default,
                    handler: nil)
                alertVC.addAction(okAction)
                presentViewController(
                    alertVC,
                    animated: true,
                    completion: nil)
            }
    
    
        //MARK: Picker Delegates
        func imagePickerController(
            picker: UIImagePickerController,
            didFinishPickingMediaWithInfo info: [String : AnyObject])
        {
            let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage //2
            UIImageWriteToSavedPhotosAlbum(chosenImage, self,nil, nil)
        }
        //What to do if the image picker cancels.
        func imagePickerControllerDidCancel(picker: UIImagePickerController) {
            dismissViewControllerAnimated(true,
                completion: nil)
        }
    
    
    
    
        }
    
    
    
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

    }

    1 回复  |  直到 9 年前
        1
  •  0
  •   JuValencia    9 年前

    这就是我在我的应用程序上所做的,这可能会有所帮助。

    func saveImage(image: UIImage, funParam: (Bool) -> ()) ->Bool { //, metadata: NSDictionary) {
            if assetCollection == nil {
                return false                         // if there was an error upstream, skip the save
            }
    
            //self.validateStatus()
    
        //TODO: the return false is happening before the photo is save.
            PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                let assetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
                let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
                let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection)
                albumChangeRequest!.addAssets([assetPlaceHolder!])                                                      
                }, completionHandler: { (success, error) -> Void in
                    if success {
                        funParam(true)
                    }
                    else {
                        funParam(false)
                    }
    
            })
            return true
    
    }
    

    参数如下:

    1. 图像是您想要保护的图像。

    2. funParam是一个函数,如果您想同步控制图像的保存,它将成为完成处理程序。我这样做 因为实际保存图像的代码是异步运行的。

    已更新消息,包含调用示例:

    下面是我如何调用此代码的示例:

    我有一门课叫相册。swif和我这样调用这个函数:

    let validate = self.saveImage(imageView.image!, funParam: getSaveResponse)
    

    getSaveResponse是一种控制图像安全后应该发生什么的方法。