zoukankan      html  css  js  c++  java
  • iOS-UIScrollView的使用

     关于无限循环轮播的方法:如果有5张图片就5123451来设置

    6.9 UIScrollView
    6.9.1 常用属性

    //这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)

    self.scorllView.contentSize = CGSizeMake(imageW * IMAGE_COUNT, 0);

     //这个属性用来表示UIScrollView滚动的位置

    CGPoint offset = [self.scorllView contentOffset];

     //设置UIScrollView滚动的位置

    [self.scorllView setContentOffset:CGPointMake(-10, -10)]

    [self.scorllView setContentOffset:CGPointMake(-10, -10) animated:YES];//动画效果

     //设置或取消弹簧效果

    self.scorllView.bounces = NO;

     //这个属性能够在UIScrollView的4周增加额外的滚动区域

    self.scorllView.contentInset = UIEdgeInsetsMake(10, 10, 20, 30);

     //设置scrollView是否可以滚动

    self.scorllView.scrollEnabled = NO;

     //设置是否显示横向和纵向滚动条

    self.scorllView.showsHorizontalScrollIndicator = NO;

    self.scorllView.showsVerticalScrollIndicator = NO;

     //设置分页

    self.scrollView.pagingEnabled = YES;

     //实现缩放,需设置初始大小和缩放比例

    self.scrollView.contentSize = self.miniView.image.size;

    self.scrollView.maximumZoomScale = 2.0;

    self.scrollView.minimumZoomScale = 0.2;
    (1) ScrollView属性

    CGSize  contentSize:设置UIScrollView的滚动范围

    CGPoint  contentOffset:UIScrollView当前滚动的位置

    UIEdgeInsets  contentInset:增加滚动视图四周的增加滚动范围

     ScrollView属性

    BOOL bounces​是否有弹簧效果

    BOOL scrollEnabled​是否能滚动

    BOOL showsHorizontalScrollIndicator​是否显示水平方向的滚动条

    BOOL showsVerticalScrollIndicator​是否显示垂直方向的滚动条

    UIScrollViewIndicatorStyle indicatorStyle​设定滚动条的样式

    BOOL dragging​是否正在被拖拽

    BOOL tracking​按住手指还没有开始拖动的时候值是YES,否则NO

    BOOL decelerating​是否正在减速

    BOOL zooming​是否正在缩放

     (2) 手势缩放

       [_scrollView setMinimumZoomScale:0.2]; // 指定最小缩放比例

       [_scrollView setMaximumZoomScale:2.0]; // 指定最大缩放比例

       [_scrollView setDelegate:self]; // 设置滚动视图的代理

     <UISCrollViewDelegate> 
     #pragma mark  手势所发代理代理方法

    // 缩放中的代理方法

    - (void)scrollViewDidZoom:(UIScrollView *)scrollView{

       NSLog(@"缩放中。。。");

    }

    // 缩放完成的代理方法

    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

       NSLog(@"缩放完成 %f", scale);

    }

    // 一定要记住:本代理方法的返回值就是“要缩放的视图对象”

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

       return _imageView;

    }

     (3) 分页效果

    要实现分页效果,将滚动视图的pagingEnabled属性设置为YES即可。设置该属性后滚动视图会被分割成多个独立的页面,用户原本的滚动体验会变成了页面切换的效果

    UIPageControl分页控制控件(页面下面的小点点)

    UIPageControl属性:

    NSInteger numberOfPages:总页数

    NSInteger currentPage:当前的页码

    BOOL hidesForSinglePage:当只有一页的时候,是否要隐藏视图

    UIColor *currentPageIndicatorTintColor:当前选中页面标示的颜色

    UIColor *pageIndicatorTintColor:其他页面标示的颜色

    代码式例:

     // 增加分页控件

       UIPageControl *pageControl = [[UIPageControl alloc]init];

       [pageControl setBounds:CGRectMake(0, 0, 150.0, 50.0)];

       [pageControl setCenter:CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 100.0)];

       [pageControl setNumberOfPages:2];

       [pageControl setCurrentPage:0]; 

       [pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]]; 

       [pageControl setPageIndicatorTintColor:[UIColor blackColor]];
       [pageControl addTarget:self action:@selector(updatePageChanged:) forControlEvents:UIControlEventValueChanged]; // 小圆点被点击方法
         [self.view addSubview:pageControl];// 添加到视图中,而不是scroller中。
     #pragma mark - 分页控件小圆点的监听方法

    - (void)updatePageChanged:(UIPageControl *)pageControl{ 

       CGFloat offsetX = pageControl.currentPage * _scroll.bounds.size.width;

       [_scroll setContentOffset:CGPointMake(offsetX, 0) animated:YES];

    }

     #pragma mark - 滚动视图代理方法

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

       NSInteger pageNo = scrollView.contentOffset.x / scrollView.bounds.size.width;   

       [_pager setCurrentPage:pageNo];
    }
    6.9.2 UIScrollViewDelegate协议方法

    //实现viewForZoomingInScrollView方法,返回要缩放的控件实现缩放,scrollview有多个图片时,只能缩放其中一个,返回那个图片就缩放那个图片

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

       return self.miniView;

    }
    // 当 offset改变的时候,时时触发

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView

    6.10 UIPageControl

    //设置总页数

    self.pageControl.numberOfPages = IMAGE_COUNT;

     //设置当前页码
    self.pageControl.currentPage = num;
     
     

    在使用UIScrollView和它的子类UITableView时,有时需要在不同操作状态下,做不同的响应。

    如何截获这些状态,如正在滚动,滚动停止等,使用UIScrollViewDelegate_Protocol

     

    @interface SampleClass: UITableViewController<UIScrollViewDelegate> {

    ...

    }

    ...

    @end

     

    @implement SampleClass

    ...

    #pragma mark -
    #pragma mark UIScrollViewDelegate

    // 触摸屏幕来滚动画面还是其他的方法使得画面滚动,皆触发该函数
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        NSLog(@"Scrolling...");
    }

    // 触摸屏幕并拖拽画面,再松开,最后停止时,触发该函数
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
        NSLog(@"scrollViewDidEndDragging  -  End of Scrolling.");
    }

    // 滚动停止时,触发该函数

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
        NSLog(@"scrollViewDidEndDecelerating  -   End of Scrolling.");
    }

     

    // 调用以下函数,来自动滚动到想要的位置,此过程中设置有动画效果,停止时,触发该函数

    // UIScrollView的setContentOffset:animated: 

    // UIScrollView的scrollRectToVisible:animated:

    // UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:

    // UITableView的selectRowAtIndexPath:animated:scrollPosition:

    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
        NSLog(@"scrollViewDidEndScrollingAnimation  -   End of Scrolling.");
    }

    @end

  • 相关阅读:
    [NOI2021] 路径交点
    CF1188D Make Equal
    CF1349F1 Slime and Sequences
    CF1067D Computer Game
    Dcat Admin安装
    PHP 中提示undefined index如何解决(多种方法)
    Git 常用命令大全
    项目维护环境部署
    bootstrap-table
    bootstrap-datetimepicker
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/5058125.html
Copyright © 2011-2022 走看看