Guest User

Untitled

a guest
Aug 15th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.28 KB | None | 0 0
  1. //
  2. // QGGetHelpVC.swift
  3. // QuoteGuru
  4. //
  5. // Created by indianic on 25/05/17.
  6. // Copyright © 2017 indianic. All rights reserved.
  7.  
  8. import UIKit
  9.  
  10. class QGGetHelpVC: UIViewController,UIScrollViewDelegate,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
  11.  
  12. @IBOutlet weak var collViewPaging: UICollectionView!
  13.  
  14. @IBOutlet weak var pageControl: UIPageControl!
  15.  
  16. let viewNav = QGNavigationBarView()
  17. var arrImages = [String]()
  18. var timer = Timer()
  19.  
  20. var objCompletionHandler: ((Int) -> Void)?
  21. var intGetLastPageno:Int!
  22.  
  23. var boolIsCallFromOtherVC:Bool!
  24.  
  25. @IBOutlet weak var constantColViewTop: NSLayoutConstraint!
  26.  
  27.  
  28. //MARK: view life cycle..
  29. override func viewDidLoad() {
  30. super.viewDidLoad()
  31. setUpUIView()
  32.  
  33. }
  34.  
  35. override func viewWillAppear(_ animated: Bool) {
  36. super.viewWillAppear(true)
  37.  
  38. timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(pagingAction), userInfo: nil, repeats: true)
  39. }
  40.  
  41. func setUpUIView() {
  42.  
  43. //View Navigation
  44. viewNav.addNavigation(sourceController: self)
  45.  
  46. self.view.addSubview(viewNav)
  47. viewNav.isHidden = false
  48. viewNav.setNavProperties(navTitle:kHelp,navBgImage:"nav_bg",btnLeftTitle:"",btnRightFirstTitle:"",btnRightSecondTitle:"",btnLeftImg:"ic_home",btnRightFirstImg:"",btnRightSecondImg:"", strNotification: "", btnleftSecondTitle: "", btnleftSecondImg: "")
  49. viewNav.btnNavLeft.addTarget(self, action: #selector(btnHomeAction(sender:)), for: .touchUpInside)
  50.  
  51. // arrImages = ["star.png","star (1).png","star.png","star (1).png","star.png","star (1).png","star.png","star (1).png"]
  52. intGetLastPageno = 0
  53.  
  54. if IS_IPHONE{
  55. arrImages = QGGetHelpScreenUtility().arrIphoneHomeScreen(getNumber: 22, getVC: self)
  56. }
  57. else{
  58. arrImages = QGGetHelpScreenUtility().arrIpadHomeScreen(getNumber: 33, getVC: self)
  59. }
  60.  
  61. let pageCount : CGFloat = CGFloat(arrImages.count)
  62.  
  63.  
  64. pageControl.numberOfPages = Int(pageCount)
  65. pageControl.addTarget(self, action: #selector(pageControlChanged(sender:)), for: .valueChanged)
  66.  
  67. collViewPaging.showsHorizontalScrollIndicator = false
  68. collViewPaging.showsVerticalScrollIndicator = false
  69. boolIsCallFromOtherVC = false
  70.  
  71.  
  72.  
  73. if boolIsCallFromOtherVC == false{
  74. constantColViewTop.constant = 64.0
  75. }
  76. else{
  77. constantColViewTop.constant = 0
  78. }
  79.  
  80. }
  81.  
  82.  
  83.  
  84.  
  85. func callFromOtherVC(isScreenShown:Bool,getArrForScreen:[String],getVC:UIViewController,completionHandler:@escaping (Int) -> Void){
  86.  
  87. boolIsCallFromOtherVC = true
  88. constantColViewTop.constant = 0
  89.  
  90. viewNav.isHidden = true
  91. arrImages.removeAll()
  92. arrImages = getArrForScreen
  93.  
  94. objCompletionHandler = completionHandler
  95.  
  96. let pageCount : CGFloat = CGFloat(arrImages.count)
  97. pageControl.numberOfPages = Int(pageCount)
  98.  
  99. collViewPaging.reloadData()
  100.  
  101. // DispatchQueue.main.asyncAfter(deadline: .now() + 20.0) {
  102. // self.objCompletionHandler!(self.intGetLastPageno)
  103. // }
  104.  
  105.  
  106. }
  107.  
  108. //MARK: - UICollectionview Datasource Delegate Methods
  109.  
  110. public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
  111.  
  112. return arrImages.count
  113.  
  114. }
  115.  
  116. public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
  117.  
  118. let aCellPaging : QGHelpCollViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "helpCellId", for: indexPath) as! QGHelpCollViewCell
  119. aCellPaging.imgViewPaging.image = UIImage(named:arrImages[indexPath.row])
  120. return aCellPaging
  121.  
  122. }
  123.  
  124.  
  125. //MARK:- Collection view layout size for item at indexpath
  126. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  127.  
  128. return CGSize(width:collViewPaging.frame.size.width, height:collViewPaging.frame.size.height)
  129. }
  130.  
  131. // MARK:- Button action
  132. //paging Action with timer
  133. func pagingAction() {
  134.  
  135. var pageWidth = CGFloat()
  136. pageWidth = collViewPaging.frame.size.width
  137. var contentOffsetNew = CGFloat()
  138. contentOffsetNew = collViewPaging.contentOffset.x
  139. let value1 = contentOffsetNew
  140. let value2 = pageWidth
  141. let value3 = CGFloat(value1)/value2
  142. pageControl.currentPage = Int(value3)+1
  143.  
  144. let cellSize = CGSize(width: FRAME_WIDTH, height: FRAME_HEIGHT)
  145. let contentOffset = collViewPaging.contentOffset
  146. collViewPaging.scrollRectToVisible(CGRect(x:contentOffset.x + cellSize.width, y: contentOffset.y, width: cellSize.width, height: cellSize.height), animated: true)
  147.  
  148. intGetLastPageno = pageControl.currentPage
  149.  
  150. if pageControl.currentPage == (arrImages.count-1){
  151. removeTimer()
  152. if boolIsCallFromOtherVC == true{
  153. self.objCompletionHandler!(self.intGetLastPageno)
  154. }
  155. }
  156. }
  157.  
  158. //Home Button Action
  159. func btnHomeAction(sender:UIButton) {
  160. removeTimer()
  161. _ = navigationController?.popViewController(animated: true)
  162. }
  163.  
  164. //paging Action
  165. func pageControlChanged(sender:Any?) {
  166.  
  167. removeTimer()
  168.  
  169. let pageWidth = collViewPaging.frame.size.width
  170. // print(pageControl1.currentPage)
  171. print(pageControl.currentPage)
  172. let point1 = CGPoint(x:pageWidth * CGFloat(pageControl.currentPage),y:0)
  173. collViewPaging.setContentOffset(point1, animated: true)
  174.  
  175. }
  176.  
  177. @IBAction func btnOkGetItAction(_ sender: Any) {
  178.  
  179. if boolIsCallFromOtherVC == true{
  180. self.objCompletionHandler!(self.intGetLastPageno)
  181. }
  182. else
  183. {
  184. removeTimer()
  185. _ = navigationController?.popViewController(animated: true)
  186. }
  187.  
  188. }
  189. //Stop Timer
  190. func removeTimer()
  191. {
  192. // stop Timer
  193. timer.invalidate()
  194. }
  195.  
  196. //MARK:- Scrollview method
  197. func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
  198.  
  199. removeTimer()
  200. var pageWidth = CGFloat()
  201. pageWidth = collViewPaging.frame.size.width
  202. var contentOffset = CGFloat()
  203. contentOffset = collViewPaging.contentOffset.x
  204. let value1 = contentOffset
  205. let value2 = pageWidth
  206. let value3 = value1 / value2
  207.  
  208. pageControl.currentPage = Int(value3)
  209. intGetLastPageno = pageControl.currentPage
  210.  
  211. if (intGetLastPageno == arrImages.count - 1){
  212.  
  213. if boolIsCallFromOtherVC == true{
  214. DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
  215.  
  216. self.objCompletionHandler!(self.intGetLastPageno)
  217. }
  218. }
  219. }
  220. }
  221.  
  222. override func didReceiveMemoryWarning() {
  223. super.didReceiveMemoryWarning()
  224. // Dispose of any resources that can be recreated.
  225. }
  226.  
  227. }
Add Comment
Please, Sign In to add comment