UIScrollView的使用

1.创建对象并初始化:scrollview = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,460)];

2.设置滑动内容大小:scrollview.contentsize = CGSizeMake(320,500);

3.设置滑动内容的边缘:scrollview.contentInset = UIEdgeInsetMake(0,50,50,0);

4. 是否滚动 // scrollView.scrollEnabled = NO;

5. 是否分页 // scrollView.pagingEnabled = YES;

6.是否支持滑动最顶端 // scrollView.scrollsToTop = NO;

7. 是否反弹 // scrollView.bounces = NO;

8.遵循协议,设置代理//<UIScrollViewDelegate>//scrollView.delegate = self;

9.主要的代理方法:

  9.1// 返回一个放大或者缩小的视图 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { }

  9.2// 开始放大或者缩小 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView: (UIView *)view { }

  9.3// 缩放结束时 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { }

  9.4// 视图已经放大或缩小 - (void)scrollViewDidZoom:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScrollToTop"); }

  9.5// 是否支持滑动至顶部 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView { return YES; }

  9.6// 滑动到顶部时调用该方法 - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScrollToTop"); }

  9.7// scrollView 已经滑动 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScroll"); }

  9.8// scrollView 开始拖动 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { NSLog(@"scrollViewWillBeginDragging"); }

  9.9// scrollView 结束拖动 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { NSLog(@"scrollViewDidEndDragging"); }

  9.10// scrollView 开始减速(以下两个方法注意与以上两个方法加以区别) - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewWillBeginDecelerating"); }

  9.11// scrollview 减速停止 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewDidEndDecelerating"); }

10.scrollView不能滚动的情况:

  10.1contentSize要大于Frame

  10.2scrollView.scrollEnabled = YES;

  10.3由于ios6.0以后自动布局一起的无法滑动:

    在ios6之前,因为Xcode没有Autolayout的机制,所以直接使用scrollView,设置它的contentSize即可正常滚动

    在ios6之后,因为Xcode引入了Autolayout的机制,所以我们设置的contentSize被修改为适合屏幕大小的值,也就是说自适应啦,因此无法滚动,解决方案如下:
      method one:直接去掉scrollView的Autolayout即可,但是这种方式不完美,毕竟Autolayout是官方推荐的,轻易去掉会引起其他问题,因此慎用。
      method two:在viewController中重载 - (void)viewDidAppear:(BOOL)animated 方法,并且设置contentSize
         - (void)viewDidAppear:(BOOL)animated{
                         [super viewDidAppear:animated];
                         self.scrollView.contentSize = self.imageView.image.size;
                         self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
                     }
  10.4tableView和scrollView滚动起冲突,tableview不能滚动,tableView也是继承的scrollView,所以在滚动的时候也会触发scrollView的代理方法,在scrollViewDidScroll中做一下类型判断就可以了,解决办法如下:
        - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
                      if ([scrollView isKindOfClass:[UITableView class]]) {
                              NSLog(@"------是列表---");
                          }
                          else {
                              NSLog(@"------是滚动试图----");
                          }
                      }

 

posted @ 2016-05-25 16:02  PureTech  阅读(165)  评论(0编辑  收藏  举报