How to create a Scroll View with a page control using swift? [closed] How to create a Scroll View with a page control using swift? [closed] ios ios

How to create a Scroll View with a page control using swift? [closed]


import UIKitclass DummyVC: UIViewController, UIScrollViewDelegate {    let scrollView = UIScrollView(frame: CGRect(x:0, y:0, width:320,height: 300))    var colors:[UIColor] = [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]    var frame: CGRect = CGRect(x:0, y:0, width:0, height:0)    var pageControl : UIPageControl = UIPageControl(frame: CGRect(x:50,y: 300, width:200, height:50))        override func viewDidLoad() {        super.viewDidLoad()        configurePageControl()        scrollView.delegate = self        scrollView.isPagingEnabled = true        self.view.addSubview(scrollView)        for index in 0..<4 {            frame.origin.x = self.scrollView.frame.size.width * CGFloat(index)            frame.size = self.scrollView.frame.size            let subView = UIView(frame: frame)            subView.backgroundColor = colors[index]            self.scrollView .addSubview(subView)        }        self.scrollView.contentSize = CGSize(width:self.scrollView.frame.size.width * 4,height: self.scrollView.frame.size.height)        pageControl.addTarget(self, action: #selector(self.changePage(sender:)), for: UIControlEvents.valueChanged)    }    func configurePageControl() {        // The total number of pages that are available is based on how many available colors we have.        self.pageControl.numberOfPages = colors.count        self.pageControl.currentPage = 0        self.pageControl.tintColor = UIColor.red        self.pageControl.pageIndicatorTintColor = UIColor.black        self.pageControl.currentPageIndicatorTintColor = UIColor.green        self.view.addSubview(pageControl)    }    // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL    func changePage(sender: AnyObject) -> () {        let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width        scrollView.setContentOffset(CGPoint(x:x, y:0), animated: true)    }    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {        let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)        pageControl.currentPage = Int(pageNumber)    }}


For lazy coder this is the Swift 3 implementation based on That lazy iOS Guy 웃's answer

import UIKitclass ViewController: UIViewController,UIScrollViewDelegate {    let scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: 320, height: 300))    var colors:[UIColor] = [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]    var frame: CGRect = CGRect(x: 0, y: 0, width: 0, height: 0)    var pageControl : UIPageControl = UIPageControl(frame:CGRect(x: 50, y: 300, width: 200, height: 50))    override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.        configurePageControl()        scrollView.delegate = self        self.view.addSubview(scrollView)        for index in 0..<4 {            frame.origin.x = self.scrollView.frame.size.width * CGFloat(index)            frame.size = self.scrollView.frame.size            let subView = UIView(frame: frame)            subView.backgroundColor = colors[index]            self.scrollView .addSubview(subView)        }        self.scrollView.isPagingEnabled = true        self.scrollView.contentSize = CGSize(width: self.scrollView.frame.size.width * 4, height: self.scrollView.frame.size.height)        pageControl.addTarget(self, action: #selector(self.changePage(sender:)), for: UIControlEvents.valueChanged)    }    func configurePageControl() {        // The total number of pages that are available is based on how many available colors we have.        self.pageControl.numberOfPages = colors.count        self.pageControl.currentPage = 0        self.pageControl.tintColor = UIColor.red        self.pageControl.pageIndicatorTintColor = UIColor.black        self.pageControl.currentPageIndicatorTintColor = UIColor.green        self.view.addSubview(pageControl)    }    // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL    func changePage(sender: AnyObject) -> () {        let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width        scrollView.setContentOffset(CGPoint(x: x,y :0), animated: true)    }    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {        let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)        pageControl.currentPage = Int(pageNumber)    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }}


Swift 3 - Horizontal image scroll

import UIKitclass pageenabled: UIViewController,UIScrollViewDelegate {    let imagelist = ["img1.jpg", "photo1.jpg", "photo3.jpg", "photo4.jpg", "photo5.jpg"]    var scrollView = UIScrollView()    var pageControl : UIPageControl = UIPageControl(frame:CGRect(x: 50, y: 300, width: 200, height: 50))    var yPosition:CGFloat = 0    var scrollViewContentSize:CGFloat=0;    override func viewDidLoad() {        super.viewDidLoad()        scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 300))        configurePageControl()        scrollView.delegate = self        self.view.addSubview(scrollView)        for  i in stride(from: 0, to: imagelist.count, by: 1) {            var frame = CGRect.zero            frame.origin.x = self.scrollView.frame.size.width * CGFloat(i)            frame.origin.y = 0            frame.size = self.scrollView.frame.size            self.scrollView.isPagingEnabled = true            let myImage:UIImage = UIImage(named: imagelist[i])!            let myImageView:UIImageView = UIImageView()            myImageView.image = myImage            myImageView.contentMode = UIViewContentMode.scaleAspectFit            myImageView.frame = frame            scrollView.addSubview(myImageView)        }        self.scrollView.contentSize = CGSize(width: self.scrollView.frame.size.width * CGFloat(imagelist.count), height: self.scrollView.frame.size.height)        pageControl.addTarget(self, action: Selector(("changePage:")), for: UIControlEvents.valueChanged)        // Do any additional setup after loading the view.    }    func configurePageControl() {        // The total number of pages that are available is based on how many available colors we have.        self.pageControl.numberOfPages = imagelist.count        self.pageControl.currentPage = 0        self.pageControl.tintColor = UIColor.red        self.pageControl.pageIndicatorTintColor = UIColor.black        self.pageControl.currentPageIndicatorTintColor = UIColor.green        self.view.addSubview(pageControl)    }    // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL    func changePage(sender: AnyObject) -> () {        let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width        scrollView.setContentOffset(CGPoint(x: x,y :0), animated: true)    }    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {        let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)        pageControl.currentPage = Int(pageNumber)    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }}