Advertisement
Guest User

EventsVC

a guest
Jan 18th, 2018
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 7.61 KB | None | 0 0
  1. import UIKit
  2. import ZKCarousel
  3. import WebKit
  4.  
  5. class EventsAndPromotionViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
  6.    
  7.     @IBOutlet weak var menuButton: UIBarButtonItem!
  8.     @IBOutlet weak var arrowImage: UIImageView!
  9.     @IBOutlet weak var webViewHeightConstraint: NSLayoutConstraint!
  10.     @IBOutlet weak var eventPromotionLabel: UILabel!
  11.     @IBOutlet weak var webViewContainer: UIView!
  12.     @IBOutlet weak var scrollView: UIScrollView!
  13.     @IBOutlet var carousel: ZKCarousel! = ZKCarousel()
  14.    
  15.     var isViewMore: Bool = false
  16.     var eventTitles = [String]()
  17.     var eventUrls = [String]()
  18.     var webView: WKWebView!
  19.  
  20.     override func viewDidLoad() {
  21.         super.viewDidLoad()
  22.        
  23.         self.title = "Events & Promotion"
  24.         carousel.delegate = self
  25.        
  26.         // setup swreveal
  27.         if revealViewController() != nil {
  28.             menuButton.target = SWRevealViewController()
  29.             menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
  30.             self.view.addGestureRecognizer(revealViewController().panGestureRecognizer())
  31.             self.view.addGestureRecognizer(revealViewController().tapGestureRecognizer())
  32.             revealViewController().rightViewRevealWidth = 160
  33.         }
  34.        
  35.         eventPromotionLabel?.text = "Castrol Service & Win 2017"
  36.         let title = ["Castrol Service & Win 2017", "Castrol Service & Win 2018", "Castrol Service & Win 2019"]
  37.         eventTitles.append(contentsOf: title)
  38.         let url = ["https://www.apple.com", "https://www.castrol.com/en_my/malaysia.html", "https://www.castrol.com/en_my/malaysia/services/castrol-auto-service/castrol-parts-warranty.html"]
  39.         eventUrls.append(contentsOf: url)
  40.        
  41.         arrowImage.image = #imageLiteral(resourceName: "down-arrow")
  42.         setupCarousel()
  43.         setupWebView()
  44.         self.webViewContainer.frame.size.height = 4000
  45.  
  46.     }
  47.  
  48.    
  49.     override func didReceiveMemoryWarning() {
  50.         super.didReceiveMemoryWarning()
  51.         // Dispose of any resources that can be recreated.
  52.     }
  53.    
  54.     fileprivate func setupCarousel() {
  55.        
  56.         //create slide array
  57.         carousel.backgroundColor = UIColor.clear
  58.         carousel.alpha = 1
  59.         let slide1 = ZKCarouselSlide(image: #imageLiteral(resourceName: "news&Promotion1"), title: "", description: "")
  60.         let slide2 = ZKCarouselSlide(image: #imageLiteral(resourceName: "news&Promotion1"), title: "", description: "")
  61.         let slide3 = ZKCarouselSlide(image: #imageLiteral(resourceName: "news&Promotion1"), title: "", description: "")
  62.        
  63.         //Add slide to carousel
  64.         carousel.slides = [slide1, slide2, slide3]
  65.        
  66.     }
  67.    
  68.     fileprivate func setupWebView() {
  69.         let webConfiguration = WKWebViewConfiguration()
  70.         let customFrame = CGRect.init(origin: CGPoint.zero, size: CGSize.init(width: 0.0, height: self.webViewContainer.frame.size.height))
  71.         self.webView = WKWebView(frame: customFrame , configuration: webConfiguration)
  72.         webView.translatesAutoresizingMaskIntoConstraints = false
  73.         self.webViewContainer.addSubview(webView)
  74.         webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor).isActive = true
  75.         webView.rightAnchor.constraint(equalTo: webViewContainer.rightAnchor).isActive = true
  76.         webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor).isActive = true
  77.         webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor).isActive = true
  78.         webView.heightAnchor.constraint(equalTo: webViewContainer.heightAnchor).isActive = true
  79.         webView.uiDelegate = self
  80.         webView.navigationDelegate = self
  81.        
  82. //        webView.frame.size.height = 1
  83. //        webView.frame.size = webView.sizeThatFits(.zero)
  84. //        webView.scrollView.isScrollEnabled=false;
  85. //       // myWebViewHeightConstraint.constant = webView.scrollView.contentSize.height
  86. //        webView.sizeToFit()
  87.        
  88.        // webViewHeightConstraint.constant = 0
  89.         webViewContainer.isHidden = true
  90.         self.view.layoutIfNeeded()
  91.  
  92.         let myURL = URL(string: "https://www.apple.com")
  93.         let myRequest = URLRequest(url: myURL!)
  94.         webView.scrollView.isScrollEnabled = false
  95.         webView.load(myRequest)
  96.        
  97.     }
  98.    
  99.    
  100.     @IBAction func viewMoreButtonTapped(_ sender: Any) {
  101.        
  102.         isViewMore = !isViewMore
  103.  
  104.         if isViewMore {
  105.             UIView.animate(withDuration: 0.5, animations: {
  106.                 //self.webViewHeightConstraint.constant = 555
  107.                 self.webViewContainer.isHidden = false
  108.                 self.arrowImage.image = #imageLiteral(resourceName: "up-arrow")
  109.                 self.view.layoutIfNeeded()
  110.             })
  111.         } else {
  112.             UIView.animate(withDuration: 0.5, animations: {
  113. //                self.webViewHeightConstraint.constant = 0
  114.                 self.webViewContainer.isHidden = true
  115.                 self.arrowImage.image = #imageLiteral(resourceName: "down-arrow")
  116.                 self.view.layoutIfNeeded()
  117.             })
  118.         }
  119.     }
  120.    
  121.     func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  122.        
  123.         if webView.isLoading == false {
  124.             webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { [weak self] (result, error) in
  125.                 if let height = result as? CGFloat {
  126.                     print("website height: \(height)")
  127.                     print("view height: \(self?.view.frame.height)")
  128.                     print("scroll view height: \(self?.scrollView.frame.height)")
  129.                     print("web container height: \(self?.webViewContainer.frame.size.height)")
  130.                     print("web view height: \(webView.frame.size.height)")
  131.                     print("container constraint height: \(self?.webViewHeightConstraint.constant)")
  132.  
  133.                    // webView.frame.size.height += height
  134. //                    self?.view.frame = CGRect(x: self!.view.frame.origin.x, y: self!.view.frame.origin.y, width: self!.view.frame.size.width, height: height)
  135. //                    self?.scrollView.frame = CGRect(x: self!.scrollView.frame.origin.x, y: self!.scrollView.frame.origin.y, width: self!.scrollView.frame.size.width, height: height)
  136. //                    self?.webViewHeightConstraint.constant = height
  137.                 }
  138.             })
  139.         }
  140.        
  141.     }
  142.    
  143.    
  144.     /*
  145.      // MARK: - Navigation
  146.      
  147.      // In a storyboard-based application, you will often want to do a little preparation before navigation
  148.      override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  149.      // Get the new view controller using segue.destinationViewController.
  150.      // Pass the selected object to the new view controller.
  151.      }
  152.      */
  153.    
  154. }
  155.  
  156. extension EventsAndPromotionViewController : lembuDelegate {
  157.  
  158.     func getIndexWhenScrolling(currentIndex: Int) {
  159.         if currentIndex == 0 {
  160.             eventPromotionLabel.text =  eventTitles[0]
  161.             let myURL = URL(string: eventUrls[0])
  162.             let myRequest = URLRequest(url: myURL!)
  163.             webView.load(myRequest)
  164.         } else if currentIndex == 1 {
  165.             eventPromotionLabel.text =  eventTitles[1]
  166.             let myURL = URL(string: eventUrls[1])
  167.             let myRequest = URLRequest(url: myURL!)
  168.             webView.load(myRequest)
  169.         } else if currentIndex == 2 {
  170.             eventPromotionLabel.text =  eventTitles[2]
  171.             let myURL = URL(string: eventUrls[2])
  172.             let myRequest = URLRequest(url: myURL!)
  173.             webView.load(myRequest)
  174.         }
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement