Take screenshot of whole WebView in swift 4 iOS - ios

I really hope you can help me.
In my project I have a WebView opening a specific page and a button, what I need to do is taking a screenshot of the whole web page and export it as image or pdf when user press the button.
Here is what I have in my ViewCnotroller:
import UIKit
class ViewController: UIViewController {
#IBOutlet weak var WebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL (string: "https://www.google.com")
QuizView.loadRequest(URLRequest(url: url!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
#IBAction func ShotBtn(_ sender: Any) {
let activityVC = UIActivityViewController(activityItems: [self.WebView.image], applicationActivities: nil)
}
}
Now I know that value of type UIWebView has no member image, but the only example I found was using an UIImage insted WebView.
I saw this answer Get UIWebView content and convert it to image but I was looking for something in swft 4
How can I do it?
Thankyou

Related

Web View not acting as UIWebView

I've scoured the internet for 3 hours now, and have just given up. I figured since no one else on this entire planet has had this problem before, maybe I should ask the stackoverflow community, and see what happens.
I'm familiar with xCode, and objective C, but am learning swift. For my first app I figured I'd build a super simple webview app that loads a page. Easy right? I can code this in about 15 seconds in objective c, and I did, it works fine. Maybe there's something I'm missing here.
When I attempt to connect the object to the UIWebView it won't connect.
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
#IBOutlet var webView: WKWebView!
#IBOutlet var textBox: UITextField!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
let url = NSURL(string: "https://www.google.com")!
webView.loadRequest(NSURLRequest(URL: url))
webView.allowsBackForwardNavigationGestures = true
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.
}
}
Image of it not connecting. It's not connecting like it should
Change type from WKWebView to UIWebView.You have added UIWebView from object library which your are trying to connect to a WKWebView object so it will not connect. WKWebview has to be added programmatically as it is not present in object library.
These two classes have similar functionalities but they are not connected to each other in anyway.
You can use the following code to build a webView app that loads a page.
import UIKit
class ADKWebViewDemoViewController: UIViewController {
#IBOutlet weak var webview: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
webview.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.google.com")!))
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

webview doesn't show URL

I am new to iOS development, i am trying to use a UIWebView using the following code
import UIKit
class SecondViewController: UIViewController {
#IBOutlet var myWebView: UIWebView!
#IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let url = NSURL (string: "http://www.chrisharrisracing.com/twitterapp.php");
let requestObj = NSURLRequest(URL: url!);
myWebView.loadRequest(requestObj);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
However when I build the the web page is not displayed, although when I go to the web address in a browser the page works fine, any help would be appreciated
I just created a sample project to check your issue and its working for me.
class ViewController: UIViewController {
#IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL (string: "http://www.chrisharrisracing.com/twitterapp.php");
let requestObj = NSURLRequest(URL: url!);
webView.loadRequest(requestObj);
// 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.
}
}
If you want you can download the sample project from the following link
https://www.dropbox.com/home/SAMPLE%20GIT%20PROJECTS%20%5BSHARED%5D/WEBVIEW?preview=webViewSample.zip
You should add NSTransportSecurity to info.plist
HOPE THIS HELPS.....
I made a sample project with your code and it works just fine. The only difference is that I didn't use the second outlet (#IBOutlet var webView: UIWebView!) you have in this code. My guess is you haven't added any constraints for your webview and that's why you can't see it. So go to your storyboard choose your webview and then go to the triangle icon at the bottom right and choose Add missing constraints.
Of course make sure your internet connection is ok and that you have added the allow arbitrary loads key in your info.plist
Maybe you haven't added your constraints yet, which is why myWebView might not be visible. Or maybe, this is probably a longshot, but I've noticed that you have another unused UIWebView called webView. Maybe, just maybe, webView is covering up myWebView, thus you aren't seeing myWebView loading the page.

UIWebView UIViewController does not load URL

I am currently having this issue with IOS app.
When I click on a URL button the UIWebView loads the correct URL in first instance however when I visit another page within same Web View Frame it stores that page to its memory. When I navigate to another button and click back to previous button it shows the page that I was previously in instead of loading the URL.
What I want to achieve is when user clicks on button the UIWebView loads the URL .
My current code:
import UIKit
class MenuViewController: UIViewController {
#IBOutlet weak var oyebWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
oyebWebView.loadRequest(NSURLRequest(URL: NSURL(string: MenuUrl)!))
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
You can use following code it will work.
import UIKit
class MenuViewController: UIViewController {
#IBOutlet weak var oyebWebView: UIWebView!
override func viewWillAppear(animated: Bool) {
let webUrl : NSURL = NSURL(string: MenuUrl)!
let webRequest : NSURLRequest = NSURLRequest(URL: webUrl)
oyebWebView.loadRequest(webRequest);
}
override func viewDidLoad() {
// super.viewDidLoad()
//super.viewWillAppear(YES)
// self.viewDidAppear(true)
let webUrl : NSURL = NSURL(string: MenuUrl)!
let webRequest : NSURLRequest = NSURLRequest(URL: webUrl)
oyebWebView.loadRequest(webRequest);
//oyebWebView.loadRequest(NSURLRequest(URL: NSURL(string: MenuUrl)!))
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

XCODE swift - webview can't open ics link - in safari it works

I've made in Swift a webview & in that webview there are links to ics file on the same domain of the webview. Now, when you click this link in Safari, you can perfectly add this to your calendar, but when I try this in iOS simulator, or on my device, I can't 'open' the ICS file link.
Any idea what I am doing wrong? Thanks!
This is my code:
import UIKit
class FirstViewController: UIViewController {
#IBOutlet weak var webAgenda: UIWebView!
#IBOutlet weak var activityagenda: UIActivityIndicatorView!
var url = "http://******.be/agenda.php"
func loadURL () {
let requestURL = NSURL(string: url)
let request = NSURLRequest(URL: requestURL!)
webAgenda.loadRequest(request)
}
override func viewDidLoad() {
super.viewDidLoad()
loadURL()
// 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.
}
func webViewDidStartLoad(webView: UIWebView) {
activityagenda.hidden = false
activityagenda.startAnimating()
}
func webViewDidFinishLoad(webView: UIWebView) {
activityagenda.hidden = true
activityagenda.stopAnimating()
}
because you load a http site so in iOS9 will have problem with App Transport Security.
disable ATS here

URL WebView Swift Xcode 7

I am hoping someone maybe able to help, I am new too Xcode and have been trying relentlessly to execute the following URL in webview and not having much luck:
http://view.vzaar.com/5532785/player
Below is the code:
import UIKit
class ViewController: UIViewController {
#IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL (string: "http://view.vzaar.com/5532785/player")
let requestObj = NSURLRequest(URL: url!);
webView.loadRequest(requestObj)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Any suggestions would be really appreciated.
Jon
Try this,
If you using Xcode 7(swift 2). Add following details in your plist

Resources