UIScrollView的介绍及使用:

UIScrollView 是一个滚动视图

 

  我们手机的屏幕尺寸有限,当我们想要显示一个大的图片的时候我们需要用到这个控件

 

  可以在有限的屏幕中显示更多的内容

 

1, 如何使用 UIScrollView 滚动

  1> 拖入一个 UIScrollView 控件

 

  2> 给控件添加内容

 

  3> 设置 contentSize 说明可以滚动的范围

 

 

2.UIScrollView 的常见属性

  1>contentSize   设置滚动的范围

 

  2>scrollEnabled 设置图片是否滚动

 

  3>userInteractionEnabled  设置用户交互

 

  4>contentOffset 凡是看到offset 就是指的偏移, 需要让内容移动到想要的地方,就需要使用偏移值注意的是.改偏移可以看到是距离可以使用代码来控制内容的滚动

 

  5>contentInset 是一个结构题,表示content的内边距.contentInset 不参与 offset 的计算

 

  6> bounces  设置弹簧效果

 

  7> showHorizontalScrollIndicater 设置水平滚动条

 

  8> showVerticalScrollIndicater  设置垂直滚动条

1    //Contentoffset  有一个动画的的方法
2   [self.scrollView setContentOffset:偏移的距离,如果宽和高等于UIScrollView的宽和高,可以用0带代替 animated:是否动画]

 

 

3.UIScrollView的代理方法:

 

  

 1     - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
 2         // 这个方法是 只要 UIScrollView 一滚动, 就会调用的方法
 3     }
 4     
 5     - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
 6         // 开始拖拽的时候调用, 强调开始
 7     }
 8     
 9     - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
10         // 手指抬起就调用
11     }
12     
13     - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
14         // 手指抬起就调用
15     }
16     
17     - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {   
18         // 如果手指抬起的时候, scrollView 还在因为惯性移动, 这个方法才会调用
19     }
20     
21     - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {      
22         // 在手指移动后, 由于惯性停下时 才会被调用. 如果手指移开的时候没有惯性, 这个方法也不会调用
23     }
24     
25     - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
26         // 使用 setContentOffSet: animated: 方法, 有动画的时候, 动画结束时 调用, 否则不会调用
27     }
28     
29      状态栏 必须显示
30     - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView { 
31         // 点击状态栏, scrollView 会自动滚动到开始的位置, 如果返回 NO 则没有响应
32     默认情况下是YES
33         return NO;
34     }
35     
36     - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView { 
37         // 在滚动到顶端后调用
38     }
39     
40     - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
41         // 在滚动的时候调用
42 }

 

 

4.设置图片的缩放:

 

  // 放大图片
    // 1, 设置放大的倍数 zoom
    // minimun  最小
    // maximun  最大
    
    //设置最大的倍数
    self.scrollView.maximumZoomScale = 10;
    //设置最小的倍数
    self.scrollView.minimumZoomScale = 1;
    
    //这个方法是告诉我要缩放的是那一个控件
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
        return [scrollView viewWithTag:1024];
}

 

 

 

5.页码的常见属性:

 

 1   //设置总页数
 2     self.pageControl.numberOfPages = self.imgCount;
 3     //设置从哪里开始
 4     self.pageControl.currentPage = 0;
 5    // 设置当前页码的颜色
 6     self.pageControl.pageIndicatorTintColor = [UIColor blueColor];
 7     //设置其他页码的颜色
 8     self.pageControl.currentPageIndicatorTintColor = [UIColor redColor];
 9     
10     //记录当前ScrollView的宽度
11     scrollView.contentOffset.x
12     //计算当图片滚动一半多一点的时候就让页码跳到下一个
13   NSInteger pageIndex = (scrollView.contentOffset.x + scrollView.bounds.size.width / 2) / scrollView.bounds.size.width;

 

 

 

  简单的判断语句,可以用三目运算符实现.在三目运算符的时候,不要用++ +1就好了

  

1 pageIndex = pageIndex == self.imgCount - 1 ? 0 : pageIndex + 1;

 

 

6.控制图片的自动滚动:

 

需要设置一个计时器,让页面自动的滚动  setContentOffset: animated:

 

计时器一旦创建,就会一直执行,如果想让他停止就必须销毁他,如果想让执行就在创建一个

 

1     //开启计时器:
2     NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:时间 target:操作谁 selector:要操作的方法 userInfo:传递参数 repeats:是否重复];
3     //停止计时器
4   [timer incaledate];

 

 

每一个程序的执行都是像在画画一样,如果同时让他执行两个线程的话,他会先去执行主要的线程,我们之前的那个线程就会停止,所以我们改变一下他的运行循环 


1 //修改 计时器执行代码的模式
2    // 获得主运行循环
3     NSRunLoop *runloop = [NSRunLoop mainRunLoop];
4     [runloop addTimer:self.timer forMode:NSRunLoopCommonModes];
5 
6     NSDefaultRunLoopMode 默认的情况下啊
7     NSRunLoopCommonModes 获得主运行循环    

 

 

 

 

posted @ 2016-02-21 15:59  黑桃A~  阅读(287)  评论(0编辑  收藏  举报