使用Swift 3从Webview中获取,保存和编辑input = file上的图片

时间:2017-06-06 15:03:25

标签: ios webview swift3

我在Swift 3上创建了一个iOS应用程序,其目的是成为一个已经由我创建的Web应用程序的浏览器。

我需要创建一个功能,允许用户在点击网页浏览中的input=file时拍照。当他点击时,显示一个nativ菜单:

  • 拍张照片
  • 从图书馆中选择
  • 从云中选择

只是为了拍摄照片",我想用实际EXIF Data设置新拍摄照片的旋转,并将此照片保存在库中。

我知道默认情况下,iOS有一个功能,可以在点击input=file时打开菜单,但它不会存储我的图片而我无法设置方向。

先谢谢你的帮助!

我在网络应用上的输入

<input id="input-photo" type="file" name="..." accept="image/*" />

我的webview的实际代码

import UIKit

class ViewController: UIViewController, UIWebViewDelegate, UINavigationControllerDelegate {

    var boxView = UIView()

    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation");

        let url = URL(string: "https://dispatch-test.reolin.net");
        let request = URLRequest(url: url!);

        webView.delegate = self;
        webView.frame = self.view.bounds;
        webView.scalesPageToFit = true;
        webView.loadRequest(request);
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override var shouldAutorotate: Bool {
        return false;
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait;
    }

    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .portrait;
    }

    func webViewDidStartLoad(_ webView: UIWebView) {
        // Box config:
        boxView = UIView(frame: CGRect(x: (webView.frame.size.width / 2) - 50, y: (webView.frame.size.height / 2) - 50, width: 100, height: 100))
        boxView.backgroundColor = UIColor.black
        boxView.alpha = 0.9
        boxView.layer.cornerRadius = 10

        // Spin config:
        let activityView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
        activityView.frame = CGRect(x: 23, y: 16, width: 53, height: 53)
        activityView.startAnimating()

        // Text config:
        let textLabel = UILabel(frame: CGRect(x: 0, y: 70, width: 100, height: 30))
        textLabel.textColor = UIColor.white
        textLabel.textAlignment = .center
        textLabel.font = UIFont(name: textLabel.font.fontName, size: 13)
        textLabel.text = "Chargement"

        // Activate:
        boxView.addSubview(activityView)
        boxView.addSubview(textLabel)
        webView.addSubview(boxView)
    }

    func webViewDidFinishLoad(_ webView: UIWebView) {
        // Removes it:
        boxView.removeFromSuperview()
    }
}

0 个答案:

没有答案