通常我们使用UIPageControl和UIScrollView相互结合来实现多页切换,滑动页面时页控件标签(即页面下方的小白点)会更新到对应的页面。而直接点击页标签时,滚动条也会滚到相应的页。
(
UIPageControl的当前页小圆点和非当前小圆点的颜色是可以设置的,同时如果只有一页的时候也可以选择是否显示圆点
)
效果图如下:
代码如下:
import
UIKit
class
ViewController
:
UIViewController
,
UIScrollViewDelegate
{
//界面设计元素引用
@IBOutlet
var
pageControl:
UIPageControl
!
scrollView:
UIScrollView
!
//需要显示的页面内容
courses = [
[
"name"
:
"Swift"
"pic"
"swift.png"
],
"ObjectC"
"oc.jpg"
"Java"
"java.png"
]
]
override
func
viewDidLoad() {
super
.viewDidLoad()
// Do any additional setup after loading the view,typically from a nib.
//设置scrollView的内容总尺寸
scrollView.contentSize =
CGSizeMake
(
CGFloat
(
CGRectGetWidth
(
self
.view.bounds)) *
.courses.count),
CGRectGetHeight
.view.bounds)
)
//关闭滚动条显示
scrollView.showsHorizontalScrollIndicator =
false
scrollView.showsVerticalScrollIndicator =
false
scrollView.scrollsToTop =
false
//协议代理,在本类中处理滚动事件
scrollView.delegate =
self
//滚动时只能停留到某一页
scrollView.pagingEnabled =
true
//添加页面到滚动面板里
let
size = scrollView.bounds.size
for
(seq,course)
in
courses.enumerate() {
page =
UIView
()
imageView=
UIImageView
(image:
UIImage
(named:course[
]!))
page.addSubview(imageView);
page.backgroundColor =
UIColor
.greenColor()
lbl =
UILabel
(frame:
CGRect
(x: 0,y: 20,width: 100,height: 20))
lbl.text = course[
]
page.addSubview(lbl)
page.frame =
(x:
(seq) * size.width,y: 0,
width: size.width,height: size.height)
scrollView.addSubview(page)
}
//页控件属性
pageControl.backgroundColor =
.clearColor()
pageControl.numberOfPages = courses.count
pageControl.currentPage = 0
//设置页控件点击事件
pageControl.addTarget(
"pageChanged:"
UIControlEvents
.
ValueChanged
)
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//UIScrollViewDelegate方法,每次滚动结束后调用
scrollViewDidEndDecelerating(scrollView:
!) {
//通过scrollView内容的偏移计算当前显示的是第几页
page =
Int
(scrollView.contentOffset.x / scrollView.frame.size.width)
//设置pageController的当前页
pageControl.currentPage = page
}
//点击页控件时事件处理
pageChanged(sender:
) {
//根据点击的页数,计算scrollView需要显示的偏移量
frame = scrollView.frame
frame.origin.x = frame.size.width *
(sender.currentPage)
frame.origin.y = 0
//展现当前页面内容
scrollView.scrollRectToVisible(frame,animated:
true
)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。