ios UIScrollView

  用来实现 “滚动”和“缩放”

  一、简单使用步骤:

        (1)创建UIScrollView;

          (2) 添加子控件;

        (3)设置滚动区域

        注意:不能点击可能出现的情况

  设置滚动区域
 [scrollView setContentSize:self.btImage.frame.size];

  设置是否可以点击

 [scrollView setScrollEnabled:YES];

      设置是否可以交互

scrollView.userInteractionEnabled=NO;

  没有取消autolayout功能,自动布局

    三、常见属性

      当UIScrollView内部的内容滚动时,相对于UIScrollView左上角的偏移:也可以手动设置

 scrollView setContentOffset:<#(CGPoint)#> //不带动画

  

 [scrollView setContentOffset:<#(CGPoint)#> animated:YES];//带动画

 

   设置是否需要弹簧效果:

 [scrollView setBounces:NO];

 

  隐藏指示器

    scrollView.showsVerticalScrollIndicator=NO;//隐藏垂直
    scrollView.showsHorizontalScrollIndicator=NO;//隐藏水平

 

 设置scrollView内边距:相当于给内容加了一个框

 [scrollView setContentInset:[UIEdgeInsetsMake(top, left, bottom, right)];

  

    获取控件的Y坐标的最大值:

 CGFloat cgFloat= CGRectGetMaxY(self.btImage.frame);

  

    四、代理滑动事件:

      1、滚动事件设置

  self.scrollView.delegate=self;//设置控制器
@interface ViewController () <UIScrollViewDelegate>   //遵守协议
- (void)scrollViewDidScroll:(UIScrollView *)scrollView  //滚动过程事件

     

  

      2、缩放实现

          1)设置滚动事件

          2)写协议缩放方法

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    
    return self.image;//返回需要缩放的按钮
}

         

          3)设置缩放的大小

  self.scrollView.minimumZoomScale=2.0;//缩小的比例
  self.scrollView.maximumZoomScale=4.0; //放大的比例

  五、滚动方法总结

         

/**
 滚动
 */
//用户在滚动的时候调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
}
//用户在即将开始拖拽调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    
}
//用户在结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    
}

/**
缩放
*/
//返回要进行缩放的控件,这个方法在控件创建的就会执行
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

    return self.image;
}

//即将开始缩放的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
    
}
//正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    
}

//缩放完毕的时候调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{

}

       六、实现自动分页           

 self.scrollView.pagingEnabled=YES;//根据scrollView自身的宽度来分页

     

      七、UIPageControl 指示器

    [self.pageControl setNumberOfPages:5];//设置点的总个数;
    [self.pageControl setCurrentPage:0];//设置当前选中的第几个点
    self.pageControl.hidesForSinglePage=YES;  //是否隐藏页码指示器
    self.pageControl.currentPageIndicatorTintColor=[UIColor redColor];//当前页面指示器颜色
    self.pageControl.pageIndicatorTintColor=[UIColor redColor];//其他页码颜色

      八、计时器

         1、NSTimer(时间间隔比较大) 1秒、几秒

         2、CADisplayLink (时间间隔比较小)0.0几秒

    //创建计时器
    NSTimer *timer= [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(banerImage) userInfo:nil repeats:YES];
    //销毁计时器:销毁计时器将不能使用,再次启动需要重新启动
    [timer invalidate];
    timer=nil;
    //设置计时器的优先级,获取消息对象
    NSRunLoop *runLoop=[NSRunLoop currentRunLoop];
    // 改变优先级  NSDefaultRunLoopMode://默认优先级  NSRunLoopCommonModes:指定和控件一样优先级
    [runLoop addTimer:timer  forMode:NSRunLoopCommonModes];

  

           

  

原文地址:https://www.cnblogs.com/huihuizhang/p/12706618.html