pageControl的实现
1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4 // Do any additional setup after loading the view.
5
6 //获取当前view大小
7 CGRect bounds = self.view.frame;
8 /*
9 1.根视图控制器self.view坐标(0, 20, 320, 460); *此处针对的坐标系是window
10 2.视图控制器,只能添加到window上,因为视图控制器带有20高的白条
11 3.frame相对于父视图
12 4.bounds相对于自身
13 */
14
15 //创建滚动视图
16 UIScrollView * scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(bounds.origin.x, 0, bounds.size.width, bounds.size.height)];
17 //设置大小,使用5张图所以乘以5
18 scrollView.contentSize = CGSizeMake(bounds.size.width * 5, bounds.size.height);
19 //设置翻页
20 scrollView.pagingEnabled = YES;
21 //设置代理
22 scrollView.delegate = self;
23 //tag
24 scrollView.tag = 102;
25 //添加图片
26 for (int i = 0; i < 5; i++)
27 {
28 //设置图片
29 UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"soul%d.jpg", i]];
30 //创建图片视图
31 UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(bounds.origin.x + bounds.size.width * i, 0, bounds.size.width, bounds.size.height)];
32 //将图片添加到图片视图
33 imageView.image = image;
34 //将图片视图添加到滚动视图上
35 [scrollView addSubview:imageView];
36
37 [imageView release];
38 }
39 [self.view addSubview:scrollView];
40 [scrollView release];
41
42 //创建pageControl
43 UIPageControl * pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(bounds.origin.x, 20, bounds.size.width,50)];
44 //tag
45 pageControl.tag = 101;
46 //页面数目
47 pageControl.numberOfPages = 5;
48 //默认第一页被选中,如果选择其他页面可以设置currentpage
49 pageControl.currentPage = 0;//默认为0
50 //在只有一个page时候隐藏指示器
51 pageControl.hidesForSinglePage = YES;
52 [self.view addSubview:pageControl];
53 [self.view bringSubviewToFront:pageControl];
54 [pageControl addTarget:self action:@selector(pageChange:) forControlEvents:UIControlEventValueChanged];
55 }
56
57 - (void)pageChange:(UIPageControl *)page
58 {
59 UIScrollView * scrollView = (UIScrollView *)[self.view viewWithTag:102];
60 switch (page.currentPage)
61 {
62 case 0:
63 scrollView.contentOffset = CGPointMake(320 * page.currentPage, 0);
64 break;
65 case 1:
66 scrollView.contentOffset = CGPointMake(320 * page.currentPage, 0);
67 break;
68 case 2:
69 scrollView.contentOffset = CGPointMake(320 * page.currentPage, 0);
70 break;
71 case 3:
72 scrollView.contentOffset = CGPointMake(320 * page.currentPage, 0);
73 break;
74 case 4:
75 scrollView.contentOffset = CGPointMake(320 * page.currentPage, 0);
76 break;
77 default:
78 break;
79 }
80 }
81
82 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
83 {
84 UIPageControl * pageControl = (UIPageControl *)[self.view viewWithTag:101];
85 CGRect bounds = self.view.frame;
86 if (scrollView.contentOffset.x == bounds.size.width * 0)
87 {
88 pageControl.currentPage = 0;
89 }
90 else if (scrollView.contentOffset.x == bounds.size.width * 1)
91 {
92 pageControl.currentPage = 1;
93 }
94 else if (scrollView.contentOffset.x == bounds.size.width * 2)
95 {
96 pageControl.currentPage = 2;
97 }
98 else if (scrollView.contentOffset.x == bounds.size.width * 3)
99 {
100 pageControl.currentPage = 3;
101 }
102 else if (scrollView.contentOffset.x == bounds.size.width * 4)
103 {
104 pageControl.currentPage = 4;
105 }
106 }