您的位置:首页 > 产品设计 > UI/UE

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

{

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐