通常我们使用UIPageControl和UIScrollView相互结合来实现多页切换,滑动页面时页控件标签(即页面下方的小白点)会更新到对应的页面。而直接点击页标签时,滚动条也会滚到相应的页。
@H_301_4@
(
UIPageControl的当前页小圆点和非当前小圆点的颜色是可以设置的,同时如果只有一页的时候也可以选择是否显示圆点
)
@H_301_4@
@H_301_4@
@H_301_4@
效果图如下:
@H_301_4@
@H_301_4@
@H_301_4@
@H_301_4@
@H_301_4@
@H_301_4@
代码如下:
@H_301_4@
@H_301_4@
import
UIKit
@H_301_4@
@H_301_4@
@H_502_45@class
ViewController
:
UIViewController
,
UIScrollViewDelegate
{
@H_301_4@
@H_301_4@
//界面设计元素引用
@H_301_4@
@IBOutlet
var
pageControl:
UIPageControl
!
@H_301_4@
scrollView:
UIScrollView
!
@H_301_4@
@H_301_4@
//需要显示的页面内容
@H_301_4@
courses = [
@H_301_4@
[
"name"
:
"Swift"
"pic"
"swift.png"
],
@H_301_4@
"ObjectC"
"oc.jpg"
301_4@
"Java"
"java.png"
]
@H_301_4@
]
@H_301_4@
@H_301_4@
override
func
viewDidLoad() {
@H_301_4@
super
.viewDidLoad()
@H_301_4@
// Do any additional setup after loading the view,typically from a nib.
@H_301_4@
@H_301_4@
@H_301_4@
//设置scrollView的内容总尺寸
@H_301_4@
scrollView.contentSize =
CGSizeMake
(
@H_301_4@
CGFloat
(
CGRectGetWidth
(
self
.view.bounds)) *
.courses.count),
@H_301_4@
CGRectGetHeight
.view.bounds)
@H_301_4@
)
@H_301_4@
//关闭滚动条显示
@H_301_4@
scrollView.showsHorizontalScrollIndicator =
false
@H_301_4@
scrollView.showsVerticalScrollIndicator =
false
@H_301_4@
scrollView.scrollsToTop =
false
@H_301_4@
//协议代理,在本类中处理滚动事件
@H_301_4@
scrollView.delegate =
self
@H_301_4@
//滚动时只能停留到某一页
@H_301_4@
scrollView.pagingEnabled =
true
@H_301_4@
//添加页面到滚动面板里
@H_301_4@
let
size = scrollView.bounds.size
@H_301_4@
for
(seq,course)
in
courses.enumerate() {
@H_301_4@
page =
UIView
()
@H_301_4@
imageView=
UIImageView
(image:
UIImage
(named:course[
]!))
@H_301_4@
page.addSubview(imageView);
@H_301_4@
page.backgroundColor =
UIColor
.greenColor()
@H_301_4@
lbl =
UILabel
(frame:
CGRect
(x: 0,y: 20,width: 100,height: 20))
@H_301_4@
lbl.text = course[
]
@H_301_4@
page.addSubview(lbl)
@H_301_4@
@H_301_4@
page.frame =
(x:
(seq) * size.width,y: 0,
@H_301_4@
width: size.width,height: size.height)
@H_301_4@
scrollView.addSubview(page)
@H_301_4@
}
@H_301_4@
@H_301_4@
//页控件属性
@H_301_4@
pageControl.backgroundColor =
.clearColor()
@H_301_4@
pageControl.numberOfPages = courses.count
@H_301_4@
pageControl.currentPage = 0
@H_301_4@
//设置页控件点击事件
@H_301_4@
pageControl.addTarget(
"pageChanged:"
UIControlEvents
.
ValueChanged
)
@H_301_4@
}
@H_301_4@
@H_301_4@
didReceiveMemoryWarning() {
@H_301_4@
.didReceiveMemoryWarning()
@H_301_4@
// Dispose of any resources that can be recreated.
@H_301_4@
}
@H_301_4@
@H_301_4@
//UIScrollViewDelegate方法,每次滚动结束后调用
@H_301_4@
scrollViewDidEndDecelerating(scrollView:
!) {
@H_301_4@
//通过scrollView内容的偏移计算当前显示的是第几页
@H_301_4@
page =
Int
(scrollView.contentOffset.x / scrollView.frame.size.width)
@H_301_4@
//设置pageController的当前页
@H_301_4@
pageControl.currentPage = page
@H_301_4@
}
@H_301_4@
@H_301_4@
@H_99_404@//点击页控件时事件处理
@H_301_4@
pageChanged(sender:
) {
@H_301_4@