zoukankan      html  css  js  c++  java
  • iOS基础-UIScrollView、UIPageControl

    UIScrollView的常用属性

    UIScrollview主要专长于两个方面:

    滚动:contentSize大于Frame.size的时候,能够滚动。

    缩放:自带缩放,可以指定缩放倍数。

    滚动属性

    contentSize:定义内容区域大小,决定是否能够滑动

    contentOffset:视图左上角距离坐标原点的偏移量

    scrollsToTop:滑动到顶部(点击状态条的时候)

    pagingEnabled:是否整屏翻动

    bounces:边界是否回弹

    scrollEnabled:是否能够滚动

    showsHorizontalScrollIndicator:控制是否显示水平方向的滚动条

    showVerticalScrollIndicator:控制是否显示垂直方向的滚动条

    alwaysBounceVertical:控制垂直方向遇到遇到边框是否反弹

    alwaysBounceHorizontal:控制水平方向遇到边框是否反弹

    缩放属性

    minimumZoomScale:缩小的最小比例

    maximumZoomScale:放大的最大比例

    zoomScale:设置变化比例

    zooming:判断是否正在进行缩放反弹

    bouncesZoom:控制缩放的时候是否会反弹

    注:要实现缩放,还要实现delegate,指定缩放的视图是谁

    UIScrollViewDelegate

    - (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:(CGFloat)scale{
        //完成放大缩小触发
    }
    
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
        //指定某个UIScrollview的子视图可以被放大缩小
    }
    

     UIPageControl

    常用属性

    currentPage:当前页

    numberOfPages:指定页面的个数

    注意:事件触发使用是UIControlEventsValueChanged

    pageControl与scrollView合用

    通常在Scrollview滚动的时候修改pageControl的currentPage

    使用场景:引导页,首页的轮播图

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.view.backgroundColor = [UIColor grayColor];
        _scrView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
        //创建图片
         _x = [UIScreen mainScreen].bounds.size.width;
         _w = [UIScreen mainScreen].bounds.size.width;
         _h = [UIScreen mainScreen].bounds.size.height;
        for (int i = 1; i < 5; i++) {
            NSString *str = [NSString stringWithFormat:@"%d.png",i];
            UIImage *image = [UIImage imageNamed:str];
    
            
            UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((i-1) * _x, 0, _w, _h)];
            imageView.image = image;
            [self.scrView addSubview:imageView];
            [imageView release];
        }
        
    //    UIImageView *image1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"6"]];
    //    image1.tag = 100;
        [self.view addSubview:_scrView];
    //    [_scrView addSubview:image1];
        
        //设置scr滚动范围
        _scrView.contentSize = CGSizeMake(_x * 4, 1200);
        self.scrView.pagingEnabled = YES;
        self.scrView.delegate = self;
        [self.scrView release];
    //    self.scrView.maximumZoomScale = 2.0;
    //    self.scrView.minimumZoomScale = 0.5;
        
        _pageCtr = [[UIPageControl alloc] initWithFrame:CGRectMake(160, 10, 100, 20)];
        _pageCtr.numberOfPages = 4;
        _pageCtr.currentPage = 0;
    //    _pageCtr.backgroundColor = [UIColor redColor];
        _pageCtr.pageIndicatorTintColor = [UIColor redColor];
        _pageCtr.currentPageIndicatorTintColor = [UIColor greenColor];
        [self.view addSubview:_pageCtr];
        
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(300, 20, 60, 30);
        btn.layer.borderWidth = 1;
        btn.layer.cornerRadius = 5;
        
        [btn setTitle:@"下一页" forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];
        
        [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
        [_pageCtr addTarget:self action:@selector(nextImage) forControlEvents:UIControlEventValueChanged];
        
        
    }
    
    - (void)btnClick{
        SecondViewController *svc = [[SecondViewController alloc] init];
        [self presentViewController:svc animated:YES completion:nil];
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
        NSLog(@"开始拖了");
        int page = (scrollView.contentOffset.x + scrollView.frame.size.width * 0.5)/ scrollView.frame.size.width;
        self.pageCtr.currentPage = page;
    }
    
    
    - (void)nextImage{
        if (self.pageCtr.currentPage == 3) {
            self.pageCtr.currentPage =0;
            
        }else{
            self.pageCtr.currentPage++;
        }
        CGFloat offsetX = self.pageCtr.currentPage * self.scrView.frame.size.width;
        CGPoint offset = CGPointMake(offsetX, 0);
        [self.scrView setContentOffset:offset animated:YES];
    }
    
  • 相关阅读:
    Codeforces714C【映射】
    Codeforces712C【贪心】
    Codeforces712B【= =】
    lightoj1259 【素数预处理】
    Codeforces482B【线段树构造】
    51nod 1348【next_permutation】
    hdoj5289【RMQ+二分】【未完待续】
    hdoj5875【二分+RMQ】
    RMQ算法
    AtCoder Regular Contest 061 DSnuke's Coloring
  • 原文地址:https://www.cnblogs.com/dingjianjaja/p/4840918.html
Copyright © 2011-2022 走看看