UIPageController和UIScrollView结合使用
2016-07-03 19:57
274 查看
UIPageController
UIPageController控件主要用来实现视图分页,通常会和UIScrollView配合使用
创建
UIPageControl *page=[[UIPageControl alloc] init];
设置frame
pagel.frame = CGRectMake(0,self.view.frame.size.height -40,self.view.frame.size.width,20);
常用属性
分页面的数量
page.numberOfPages = self.imageNames.count;
设置翻页标渲染颜色
page.pageIndicatorTintColor = [UIColor blackColor];
设置当前页的渲染颜色
pagel.currentPageIndicatorTintColor =[UIColor redColor];
关闭用户交互
page.userInteractionEnabled = NO;
添加到父视图
[self.view addSubview:page];
UIPageController和UIScrollView配合使用
首先需要遵守<UIScrollViewDelegate>协议,然后在viewDidLoad:方法里面给delegate赋值,
最后实现协议中的scrollViewDidScroll:方法,该方法在每次完成滚动的时候都会被调用,即在该方法里面计算出当前显示第几页并赋值给self.pageControl.currentPage
- (void)viewDidLoad
{
[super viewDidLoad];
UIScrollView *scrollView=[[UIScrollView alloc] init];
CGRect frame=self.view.frame;
scrollView.frame=frame;
UIImage *image1=[UIImage imageNamed:@"1.jpg"];
UIImage *image2=[UIImage imageNamed:@"2.jpg"];
UIImage *image3=[UIImage imageNamed:@"3.jpg"];
self.array=@[image1,image2,image3];
CGSize size=CGSizeMake(self.array.count*self.view.frame.size.width, self.view.frame.size.height);
//显示内容大小
scrollView.contentSize=size;
for(int i=0;i<self.array.count;i++)
{
UIImageView *imageView=[[UIImageView alloc] initWithImage:self.array[i]];
//图片显示形式
imageView.contentMode=UIViewContentModeScaleAspectFit;
//图片显示范围
imageView.frame=CGRectMake(i*self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height);
//加到scrollView中
[scrollView addSubview:imageView];
}
//整页翻动
scrollView.pagingEnabled=YES;
UIPageControl *page=[[UIPageControl alloc] init];
self.page=page;
//位置
page.frame = CGRectMake(0,self.view.frame.size.height - 40, self.view.frame.size.width,20);
//页面个数
page.numberOfPages=self.array.count;
//设置颜色
page.currentPageIndicatorTintColor=[UIColor redColor];
page.pageIndicatorTintColor=[UIColor blackColor];
//将自己设置成.delegate
scrollView.delegate=self;
//加到view里
[self.view addSubview:scrollView];
[self.view addSubview:page];
}
//实现方法
//最后实现page的指示标配合scrollView的滚动显示功能,此功能需要通过scrollView的delegate来实现。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//得到图片移动相对原点的坐标
CGPoint point=scrollView.contentOffset
//移动不能超过左边;
if(point.x<0)
{
point.x=0;
scrollView.contentOffset=point;
}
//移动不能超过右边
if(point.x>(self.array.count-1)*self.view.frame.size.width)
{
point.x=self.view.frame.size.width*(self.array.count-1);
scrollView.contentOffset=point;
}
//根据图片坐标判断页数
NSInteger index=round(point.x/self.view.frame.size.width);
self.page.currentPage=index;
}
UIPageController控件主要用来实现视图分页,通常会和UIScrollView配合使用
创建
UIPageControl *page=[[UIPageControl alloc] init];
设置frame
pagel.frame = CGRectMake(0,self.view.frame.size.height -40,self.view.frame.size.width,20);
常用属性
分页面的数量
page.numberOfPages = self.imageNames.count;
设置翻页标渲染颜色
page.pageIndicatorTintColor = [UIColor blackColor];
设置当前页的渲染颜色
pagel.currentPageIndicatorTintColor =[UIColor redColor];
关闭用户交互
page.userInteractionEnabled = NO;
添加到父视图
[self.view addSubview:page];
UIPageController和UIScrollView配合使用
首先需要遵守<UIScrollViewDelegate>协议,然后在viewDidLoad:方法里面给delegate赋值,
最后实现协议中的scrollViewDidScroll:方法,该方法在每次完成滚动的时候都会被调用,即在该方法里面计算出当前显示第几页并赋值给self.pageControl.currentPage
- (void)viewDidLoad
{
[super viewDidLoad];
UIScrollView *scrollView=[[UIScrollView alloc] init];
CGRect frame=self.view.frame;
scrollView.frame=frame;
UIImage *image1=[UIImage imageNamed:@"1.jpg"];
UIImage *image2=[UIImage imageNamed:@"2.jpg"];
UIImage *image3=[UIImage imageNamed:@"3.jpg"];
self.array=@[image1,image2,image3];
CGSize size=CGSizeMake(self.array.count*self.view.frame.size.width, self.view.frame.size.height);
//显示内容大小
scrollView.contentSize=size;
for(int i=0;i<self.array.count;i++)
{
UIImageView *imageView=[[UIImageView alloc] initWithImage:self.array[i]];
//图片显示形式
imageView.contentMode=UIViewContentModeScaleAspectFit;
//图片显示范围
imageView.frame=CGRectMake(i*self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height);
//加到scrollView中
[scrollView addSubview:imageView];
}
//整页翻动
scrollView.pagingEnabled=YES;
UIPageControl *page=[[UIPageControl alloc] init];
self.page=page;
//位置
page.frame = CGRectMake(0,self.view.frame.size.height - 40, self.view.frame.size.width,20);
//页面个数
page.numberOfPages=self.array.count;
//设置颜色
page.currentPageIndicatorTintColor=[UIColor redColor];
page.pageIndicatorTintColor=[UIColor blackColor];
//将自己设置成.delegate
scrollView.delegate=self;
//加到view里
[self.view addSubview:scrollView];
[self.view addSubview:page];
}
//实现方法
//最后实现page的指示标配合scrollView的滚动显示功能,此功能需要通过scrollView的delegate来实现。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//得到图片移动相对原点的坐标
CGPoint point=scrollView.contentOffset
//移动不能超过左边;
if(point.x<0)
{
point.x=0;
scrollView.contentOffset=point;
}
//移动不能超过右边
if(point.x>(self.array.count-1)*self.view.frame.size.width)
{
point.x=self.view.frame.size.width*(self.array.count-1);
scrollView.contentOffset=point;
}
//根据图片坐标判断页数
NSInteger index=round(point.x/self.view.frame.size.width);
self.page.currentPage=index;
}
相关文章推荐
- Android UI控件学习笔记(二)
- 自定义 UISwitch
- 【Codeforces】-#222A-KShooshuns and Sequence(思维)
- FragmentTabHost 的使用+一个上架项目源码+一个UI项目源码
- kvm 中 Guest Is already in use 处理办法
- gradle 构建 Smack 报错:Can't find android.jar for 8 API. + steps for building android platform
- EasyUI学习总结(三)——EasyUI组件使用
- requirejs里的require方法
- hibernate uniqueResult方法
- 【CodeForces】222A - Shooshuns and Sequence(思维)
- LeetCode 334 Increasing Triplet Subsequence
- vue-cli需要的包
- EasyUI学习总结(二)——EasyUI布局
- EasyUI学习总结(一)——EasyUI入门
- cQueue类型定义
- iOS GPUImage之GPUImageMovie视频滤镜(2)
- 代码获取storyboard中定义的UIViewController
- EXP-00091: Exporting questionable statistics.
- UILabel 的文字顶部对齐
- UIButton