loginScrollView = UIScrollView()
view.addSubview(loginScrollView)
loginScrollView.mas_makeConstraints { (make) in
make?.top.equalTo()(view.mas_top)?.offset()(headSize(size: 0))
make?.bottom.equalTo()(view.mas_bottom)?.offset()(footSize(size: 0))
make?.left.equalTo()(view.mas_left)
make?.width.mas_equalTo()(kScreenWidth)
}
loginScrollView.backgroundColor = .red
// 可以滚动的区域
loginScrollView.contentSize = CGSize(width: kScreenWidth, height: kScreenHeight * 2)
// 设置是否翻页
// loginScrollView.isPagingEnabled = true
// 显⽰示⽔水平滚动条
loginScrollView.showsHorizontalScrollIndicator = true
// 显⽰示垂直滚动条
loginScrollView.showsVerticalScrollIndicator = true
// 滚动条样式
loginScrollView.indicatorStyle = UIScrollView.IndicatorStyle.black
// 设置回弹效果
loginScrollView.bounces = false
// 设置scrollView可以滚动
loginScrollView.isScrollEnabled = true
// 当scrollsToTop=true时,点击设备状态栏会自动滚动到顶部
loginScrollView.scrollsToTop = true
// 缩放的最小比例
loginScrollView.minimumZoomScale = 0.3
// 放大的最大比例
loginScrollView.maximumZoomScale = 3.0
// 缩放回弹
loginScrollView.bouncesZoom = true
pageControl = UIPageControl()
loginScrollView.addSubview(pageControl)
// 页码控制器
pageControl.frame = CGRect(x: 0, y: kScreenHeight-50, width: kScreenWidth, height: 50)
pageControl.backgroundColor = UIColor.gray
// 总共有多少页
pageControl.numberOfPages = 6
// 当前页码
pageControl.currentPage = 3
// 添加点击事件
pageControl.addTarget(self, action: #selector(pageControlClick), for: .valueChanged)
view.addSubview(pageControl)
实现方法
@objc func pageControlClick(pageControl:UIPageControl) {
UIView.animate(withDuration: 0.3) {
self.loginScrollView.contentOffset = CGPoint(x: 0, y: CGFloat(pageControl.currentPage) * self.loginScrollView.frame.size.height)
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// print("scrollView滚动时调用,只要offset的值发生变化就调用")
// 函数floor的作用是返回比小的整数
var page = floor((scrollView.contentOffset.y)/scrollView.frame.size.height)
self.pageControl.currentPage = Int(page)
}
func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
// print("当将要开始缩放时,执行该方法。一次有效缩放就只执行一次。")
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
// print("当scrollView缩放时,调用该方法。在缩放过程中,会多次调用")
}
func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
// print("当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。")
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
// print("返回将要缩放的UIView对象。要执行多次")
return scrollView.subviews.first
}
func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
// print("指示当用户点击状态栏后,滚动视图是否能够滚动到顶部。")// 需要设置滚动视图的属性:scrollView.scrollsToTop=true
return true
}
func scrollViewDidScrollToTop(_ scrollView: UIScrollView) {
// print("当滚动视图滚动到最顶端后,执行该方法")
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
// print("当开始滚动视图时,执行该方法。一次有效滑动只执行一次。")
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
// print("滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动只执行一次。")
}
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
// print("滑动减速时调用该方法。")
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
// print("滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动只执行一次。")
}
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
// print("当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用")
}
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
// print("滑动scrollView,并且手指离开时执行。一次有效滑动只执行一次。") //当pagingEnabled属性为true时,不调用该方法
}