首页 > 代码库 > UI第七课

UI第七课

主要内容: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];
        }   

UI第七课