实习笔记:uiscrollview与pagecontrol的综合应用

实习开发iOS地图租车界面时用到的界面UI元素。
趁有空在这里记录一下。
这是引入项目之前拿来做小测试的小小demo。

import UIKit

class ViewController: UIViewController,UIScrollViewDelegate {

@IBOutlet weak var myScrollView: UIScrollView!

var codePageControl: UIPageControl!

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

    let currentPageNumber = Int(round(myScrollView.contentOffset.x / scrollView.frame.size.width))

    codePageControl.currentPage = currentPageNumber
}

func codePageControlAction(sender: UIPageControl) {
    let currentPageNumber = sender.currentPage 
    let width = myScrollView.frame.size.width

    let offset = CGPoint(x: width * CGFloat(currentPageNumber), y: 0)

    myScrollView.setContentOffset(offset, animated: true)
}

override func viewDidLayoutSubviews() {

    myScrollView.contentSize.width = myScrollView.frame.width * 3

    let viewColors = [UIColor.red,UIColor.green,UIColor.blue]

    for i in 0..<3{
        let oneView = UIView(
            frame: CGRect(
                x: CGFloat(i) * myScrollView.frame.size.width,
                y: 0,
                width: myScrollView.frame.size.width,
                height: myScrollView.frame.size.height))
        oneView.backgroundColor = viewColors[i]
        myScrollView.addSubview(oneView)
    }

    myScrollView.isPagingEnabled = true

    myScrollView.bounces = false

    //建立PageControl
    codePageControl = UIPageControl(frame: CGRect(x: view.frame.size.width/2 - 30, y: view.frame.size.height - 50, width: 60, height: 37))

    codePageControl.pageIndicatorTintColor = UIColor.black

    codePageControl.currentPageIndicatorTintColor = UIColor.lightGray

    codePageControl.numberOfPages = 3

    codePageControl.currentPage = 0

    codePageControl.addTarget(self, action: #selector(ViewController.codePageControlAction(sender:)), for: .valueChanged)

    view.addSubview(codePageControl)
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值