主要内容:UIScrollView、UIPageControl(用途:软件的介绍页面、相册。。。等)
一、UIScrollView
UIScrollView:是可以滚动的View(注意:UIView本身不能滚动,子类UIScrollView拓展了滚动方面的功能,UIScrollView是所有滚动视图的基类)
主要专长与两个方面:
1、滚动:contentSize大于frame.size时,能够滚动
2、缩放:自带缩放,可以指定缩放倍数
UIScrollView滚动的相关属性:
1、contentSize:定义内容区域大小,决定是否能够滑动
2、contentOffset:视图左上角距离坐标原点的偏移量
3、scrollsToTop:滑动到顶部(滑动滚动条的时候)
4、pagingEnable:是否整页滑动
5、bounces:边界是否回弹
6、scrollEnable:是否能够滚动
7、showsHorizontalScrolllndicator:控制是否显示水平方向的滚动条
8、showsVerticalScrolllndicator:控制是否显示垂直方向的滚动条
9、alwaysBounceHorizontal:控制水平方向遇到边框是否反弹
10、alwaysBounceVertical:控制垂直方向遇到边框是否反弹
UIScrollView缩放的相关属性
1、minimumZoomScale:缩放的最小比例
2、maximumZoomScale:放大的最大比例
3、zoomScale:设置变化比例
4、zooming:判断是否在进行缩放反弹
5、bounceRoom:控制缩放的时候是否会反弹
注意:要实现缩放,还需要实现delegate,指定缩放的视图是谁
UIScrollView滚动代理方法
/ / 滚动就会触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
/ / 开始拖拽时触发
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
/ / 结束拖拽时触发
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
/ / 开始减速时触发
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
/ / 结束减速时触发(停止时)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
缩放的代理方法:
/ / 完成放大缩小触发
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
/ / 指定某个UIScrollView的子视图可以被放大缩小
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
二、UIPageControl
UIPageControl:用于指示当前是第几页,通常与UIScrollView配合使用
相关属性:
currentPage:当前的页面
numberOfPages:指定页面的个数
UIPageControl从类名可以看出其父类是UIControl,所有可以像button一样给它添加事件,只不过事件触发使用的不再是UIControlEventsTouchUpInside,而是UIControlEventsValueChanged
三、UIScrollView和UIPageControl的使用示例
/ / 创建UIScrollView对象
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
/ / 添加到View上
[self addSubview:scrollView];
/ / 设置背景颜色
scrollView.background = [UIColor redColor];
/ / 设置显示横向的滑动条
self.showHorizontalScrollIndicator = YES;
/ / 设置内容视图的大小
scrollView.containSize = CGSizeMake(scrollView.bounds.size.width * i, scrollView.bounds.size.height);//有多少张图片,i就是多少
/ / 设置图片的整页滑动
scrollView.pagingEnabled = YES;
/ / 添加图片到UIScrollView中
for(int i = 0; i < count; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“%d”, i]];
/ / 设置图片的大小
imageView.frame = CGRectMake((i - 1) * self.frame.size.width, 0, self.frame.size.width, self.frame.size.height);
/ / 添加到scrollView上
[scrollView addSubview:imageView];
/ / 释放
[imageView release], imageView = nil;
}
/ / 添加页面控制器
/ / 创建对象
UIPageController *pagecontrol = [[[UIPageController alloc] init] autorelease];
/ / 设置位置
pageControl.frame = CGRectMake(0, self.view.frame.size.height - 40, self.view.frame.size.width, 30);
/ / 设置有多少个小点点(页数)
pageControl.numberOfPages = 10;
/ / 设置当前在哪个小点点
pageControl.currentPage = 2;
/ / 没选中的小店的颜色
pageControl.pageIndicatorTintColor = [UIColor redColor];
/ / 当前点点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor blueColor];
/ / 设置监听事件
[pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged]; //
/ / 添加到View上
[self.view addSubView:pageControl];
#pragma mark - 实现—pageControlAction:监听事件
- (void)pageControlAction:(UIPageControl *) sender {
/ /令UIScrollView做出相应的滑动显示
CGSize viewSize = _userGuideScrollView.frame.size;
CGRect rect = CGRectMake(sender.currentPage * viewSize.width, 0, viewSize.width, viewSize.height);
[_userGuideScrollView scrollRectToVisible:rect animated:YES];
}
#pragma mark - 重写----scrollViewDelegate中的代理方法 实现滑动
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
/ / 计算偏移量
int index = abs(scrollView.contentOffset.x / scrollView.frame.size.width);
/ / 根据偏移量来设置pageControl
_scrollPageControl.currentPage = index;
}
#pragma mark - 重写----dealloc方法
- (void)dealloc {
/ / 释放属性的内存
[_scrollPageControl release], _scrollPageControl = nil;
[_userGuideScrollView release], _userGuideScrollView = nil;
/ / 调用父类的dealloc方法
[super dealloc];
}