Add imageview to a scrollview page control (swift4)

My code below is a basic scrollview using page control which uses basic colors on each screen. I want to display a imageview over the uiview which displays the basic colors. I want to call var pics from the asset file in xcode.

                 var colors:[UIColor] = [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]
 var pics = ["a","b","c","d"]
 override func viewDidLoad() {
super.viewDidLoad()
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)
}
 func configurePageControl() {

self.pageControl.numberOfPages = colors.count}
1 Like

You can try below code :

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var scrollColors: UIScrollView!
    @IBOutlet var colorDots: UIPageControl!

    var colors:[UIColor] = [UIColor.red, UIColor.blue, UIColor.green, UIColor.yellow]
    var pics = ["img_red", "img_blue", "img_green", "img_yello"]
    var pageIndex: Int = 0


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        self.colorDots.backgroundColor = UIColor.black
        self.colorDots.pageIndicatorTintColor = UIColor.lightGray
        self.colorDots.currentPageIndicatorTintColor = UIColor.red
        self.colorDots.tintAdjustmentMode = UIViewTintAdjustmentMode.dimmed
        self.colorDots.hidesForSinglePage = true
        self.colorDots.numberOfPages = self.colors.count
    
        self.scrollColors.backgroundColor = UIColor.white
        self.scrollColors.showsVerticalScrollIndicator = false
        self.scrollColors.showsHorizontalScrollIndicator = false
        self.scrollColors.isPagingEnabled = true
    
        self.createColorsBook()
    }

    func createColorsBook() {
    
        var xOrigin:CGFloat = 0
    
        for i in 0..<self.colors.count {
        
            let imgView = UIImageView(frame: CGRect(origin: CGPoint(x: xOrigin, y: 0), size: CGSize(width: self.scrollColors.frame.size.width, height: self.scrollColors.frame.size.height)))
            imgView.backgroundColor = UIColor.clear
            imgView.contentMode = UIViewContentMode.scaleAspectFit
            imgView.clipsToBounds = true
            imgView.image = UIImage(named: (pics[i] as String))!
            self.scrollColors.addSubview(imgView)
        
            xOrigin = xOrigin + self.scrollColors.frame.size.width
        }
        self.scrollColors.contentSize = CGSize(width: (CGFloat(self.colors.count)) * self.scrollColors.frame.size.width, height:0)
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
    
        let pageWidth: CGFloat = self.scrollColors.frame.size.width
        let fractionalPage: CGFloat = self.scrollColors.contentOffset.x / pageWidth
        pageIndex = lround(Double(fractionalPage))
        self.colorDots.currentPage = pageIndex
    }
}

This topic was automatically closed after 166 days. New replies are no longer allowed.