我在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()
}
}