UIPageControl+UIScrollView 分类: ios开发 2015-04-09 20:48 160人阅读 评论(0) 收藏
2015-04-09 20:48
381 查看
UIPageControl继承了UIControl基类,默认属于活动控件,它可以与用户进行交互,经常与UIScrollerView结合使用,在实际项目也是经常使用的。当把UIScrollView的pagingEnabled设置为YES之后,UIScrollView至少每次滚动一页。此时通常结合UIPageControl使用,UIPageControl控件会充当两个功能。
使用UIPageControl显示当前的UIScrollView正在显示第几页。
当用户点击UIPageControl控件时程序控制UIScrollView自动滚动到相应的页面。
为将要显示的图片们进行初始化:
coverList=[NSArray arrayWithObjects:@”11.png”,@”22.png”,@”33.png”, nil];
获取图片的个数以备后用:
创建UIScrollPane对象
scrollView=[[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
创建背景颜色
scrollView.backgroundColor=[UIColor grayColor];
设置可以手动挑动图片
scrollView.pagingEnabled=YES;
设置UIScrollPane的contentSize—就是它可滚动区域的大小
scrollView.contentSize=CGSizeMake(CGRectGetWidth(scrollView.frame)*numberPages, CGRectGetHeight(scrollView.frame));
scrollView.showsHorizontalScrollIndicator=NO;
scrollView.showsVerticalScrollIndicator=NO;
scrollView.scrollsToTop=NO;
设置该控件委托对象
scrollView.delegate=self;
[self.view addSubview:scrollView];
接下来初始化UIPage
pageControl=[[UIPageControl alloc]init];
设置未选中时圆点的颜色
pageControl.pageIndicatorTintColor=[UIColor grayColor];
设置选中高亮时圆点的颜色
pageControl.currentPageIndicatorTintColor=[UIColor redColor];
设置默认在页面数
pageControl.currentPage=0;
设置UIPageControl总共包含多少页
pageControl.numberOfPages=numberPages;
pageControl.hidesForSinglePage=YES;
监听事件:
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
初始化时默认只需加载、显示第一页的View
[self loadScrollViewWithPage:0];
加载UIScrollPage的指定页对应的控制器
-(void)loadScrollViewWithPage:(NSUInteger)page
{
if (page>=coverList.count) {
return;
}
WXPageController *contorller=[viewControllers objectAtIndex:page];
if ((NSNull *)contorller==[NSNull null]) {
contorller=[[WXPageController alloc]initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:contorller];
}
if (contorller.view.superview==nil) {
CGRect frame=scrollView.frame;
frame.origin.x=CGRectGetWidth(frame)*page;
frame.origin.y=0;
contorller.view.frame=frame;
contorller.image.image = [UIImage imageNamed:[coverList objectAtIndex:page]]; [self addChildViewController:contorller];
[scrollView addSubview:contorller.view];
}
}
来自UIScrollViewDelegate的方法,当用户滚动了UIScrollView后激发该方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWith=CGRectGetWidth(scrollView.frame);
NSUInteger page=floor((scrollView.contentOffset.x-pageWith/2)/pageWith)+1;
pageControl.currentPage=page;
[self loadScrollViewWithPage:page-1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page+1];
}
事件监听,当用户更改UIPageControl的选中页激发方法
-(void)changePage:(id)sender
{
}
在WXPageController中声明UIImageView变量和声明并实现
-(id)initWithPageNumber:(NSInteger)pageNumber
{
self=[super initWithNibName:nil bundle:nil];
if (self) {
self.image=[[UIImageView alloc]initWithFrame:CGRectMake(0, 90, CGRectGetWidth(self.view.frame), 320)];
self.image.contentMode=UIViewContentModeScaleAspectFit;
[self.view addSubview:self.image];
}
return self;
}方法
最后分享一下,我的模板代码:http://download.csdn.net/detail/it_ds/8578789
使用UIPageControl显示当前的UIScrollView正在显示第几页。
当用户点击UIPageControl控件时程序控制UIScrollView自动滚动到相应的页面。
为将要显示的图片们进行初始化:
coverList=[NSArray arrayWithObjects:@”11.png”,@”22.png”,@”33.png”, nil];
获取图片的个数以备后用:
创建UIScrollPane对象
scrollView=[[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
创建背景颜色
scrollView.backgroundColor=[UIColor grayColor];
设置可以手动挑动图片
scrollView.pagingEnabled=YES;
设置UIScrollPane的contentSize—就是它可滚动区域的大小
scrollView.contentSize=CGSizeMake(CGRectGetWidth(scrollView.frame)*numberPages, CGRectGetHeight(scrollView.frame));
scrollView.showsHorizontalScrollIndicator=NO;
scrollView.showsVerticalScrollIndicator=NO;
scrollView.scrollsToTop=NO;
设置该控件委托对象
scrollView.delegate=self;
[self.view addSubview:scrollView];
接下来初始化UIPage
pageControl=[[UIPageControl alloc]init];
设置未选中时圆点的颜色
pageControl.pageIndicatorTintColor=[UIColor grayColor];
设置选中高亮时圆点的颜色
pageControl.currentPageIndicatorTintColor=[UIColor redColor];
设置默认在页面数
pageControl.currentPage=0;
设置UIPageControl总共包含多少页
pageControl.numberOfPages=numberPages;
pageControl.hidesForSinglePage=YES;
监听事件:
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
初始化时默认只需加载、显示第一页的View
[self loadScrollViewWithPage:0];
加载UIScrollPage的指定页对应的控制器
-(void)loadScrollViewWithPage:(NSUInteger)page
{
if (page>=coverList.count) {
return;
}
WXPageController *contorller=[viewControllers objectAtIndex:page];
if ((NSNull *)contorller==[NSNull null]) {
contorller=[[WXPageController alloc]initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:contorller];
}
if (contorller.view.superview==nil) {
CGRect frame=scrollView.frame;
frame.origin.x=CGRectGetWidth(frame)*page;
frame.origin.y=0;
contorller.view.frame=frame;
contorller.image.image = [UIImage imageNamed:[coverList objectAtIndex:page]]; [self addChildViewController:contorller];
[scrollView addSubview:contorller.view];
}
}
来自UIScrollViewDelegate的方法,当用户滚动了UIScrollView后激发该方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWith=CGRectGetWidth(scrollView.frame);
NSUInteger page=floor((scrollView.contentOffset.x-pageWith/2)/pageWith)+1;
pageControl.currentPage=page;
[self loadScrollViewWithPage:page-1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page+1];
}
事件监听,当用户更改UIPageControl的选中页激发方法
-(void)changePage:(id)sender
{
NSInteger page=[sender currentPage]; CGRect bounds=scrollView.bounds; bounds.origin.x=CGRectGetWidth(bounds)*page; bounds.origin.y=0; [scrollView scrollRectToVisible:bounds animated:YES]; [self loadScrollViewWithPage:page - 1]; [self loadScrollViewWithPage:page]; [self loadScrollViewWithPage:page + 1];
}
在WXPageController中声明UIImageView变量和声明并实现
-(id)initWithPageNumber:(NSInteger)pageNumber
{
self=[super initWithNibName:nil bundle:nil];
if (self) {
self.image=[[UIImageView alloc]initWithFrame:CGRectMake(0, 90, CGRectGetWidth(self.view.frame), 320)];
self.image.contentMode=UIViewContentModeScaleAspectFit;
[self.view addSubview:self.image];
}
return self;
}方法
最后分享一下,我的模板代码:http://download.csdn.net/detail/it_ds/8578789
相关文章推荐
- UIAlertView和UIActionSheet 分类: ios开发 2015-04-09 20:43 152人阅读 评论(0) 收藏
- iOS开发之类别、扩展 分类: ios开发 2015-04-02 11:01 160人阅读 评论(0) 收藏
- iOS网络编程实践--蓝牙对等网络通信实例讲解 分类: ios开发 2015-01-01 13:40 160人阅读 评论(0) 收藏
- 图灵ios培训第一周(使用UIWebView创建简易浏览器) 分类: ios开发 2015-03-28 12:43 295人阅读 评论(0) 收藏
- iOS开发网络篇—搭建本地服务器 分类: ios开发 2015-01-21 19:05 257人阅读 评论(1) 收藏
- iOS开发 调用系统相机和相册 分类: ios技术 2015-03-30 15:52 65人阅读 评论(0) 收藏
- iOS开发- 以图搜图功能实现 (源码+解析) 分类: ios开发 2015-01-08 19:55 194人阅读 评论(0) 收藏
- iOS多线程编程之NSOperation和NSOperationQueue的使用 分类: ios开发 2015-01-01 12:34 145人阅读 评论(0) 收藏
- 如何去掉NavigationBar的backButton 分类: ios开发 2015-01-26 11:39 323人阅读 评论(0) 收藏
- iphone获取屏幕尺寸以及状态栏 分类: ios开发 2015-03-29 21:35 198人阅读 评论(0) 收藏
- iOS开发网络篇—使用ASI框架进行文件下载 分类: ios开发 2015-02-02 10:43 133人阅读 评论(0) 收藏
- iOS开发网络篇—网络编程基础 分类: ios开发 2015-01-21 19:24 140人阅读 评论(0) 收藏
- iOS UIButton各类属性设置大全 分类: ios开发 2015-04-01 16:39 185人阅读 评论(0) 收藏
- ios 同步Get请求的实现 分类: ios开发 2015-01-30 17:36 362人阅读 评论(0) 收藏
- ios俩个APP之间跳转、传值 分类: ios开发 2015-02-01 14:41 370人阅读 评论(0) 收藏
- iOS开发网络篇—JSON介绍 分类: ios开发 2015-01-24 15:01 137人阅读 评论(0) 收藏
- IOS导航栏的使用方法 分类: ios开发 2015-01-29 10:40 282人阅读 评论(0) 收藏
- iOS开发网络篇—HTTP协议 分类: ios开发 2015-01-21 19:45 147人阅读 评论(0) 收藏
- 图灵社团ios培训第一周(类) 分类: ios开发 2015-03-28 20:39 152人阅读 评论(0) 收藏