iOS UIScrollview代理方法

方法&&属性:

// 监控目前滚动的位置(默认CGPointZero)

CGPoint                      contentOffset;
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;

// 滚动范围的大小(默认CGSizeZero)

CGSize                       contentSize;

// 视图在scrollView中的位置(UIEdgeInsetsZero)

UIEdgeInsets                 contentInset;

// 设置协议

id<UIScrollViewDelegate>      delegate;

// 指定控件是否只能在一个方向上滚动(默认为NO)

BOOL directionalLockEnabled;

// 控制控件遇到边框是否反弹(默认为YES)

BOOL                         bounces;

// 控制垂直方向遇到边框是否反弹(默认为NO,如果为YES,bounces也是YES)

BOOL                         alwaysBounceVertical;

// 控制水平方向遇到边框是否反弹(默认为NO,如果为YES,bounces也是YES)

BOOL                         alwaysBounceHorizontal;

// 控制控件是否整页翻动(默认为NO)

BOOL          pagingEnabled;

// 控制控件是否能滚动

BOOL          scrollEnabled;

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

BOOL                         showsHorizontalScrollIndicator;

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

BOOL                         showsVerticalScrollIndicator;

// 指定滚动条在scrollerView中的位置

UIEdgeInsets                 scrollIndicatorInsets;

// 设定滚动条的样式

UIScrollViewIndicatorStyle   indicatorStyle;

UIScrollViewDelegate详解

//scrollView滚动时,就调用该方法。任何offset值改变都调用该方法。即滚动过程中,调用多次
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidScroll");
    CGPoint point=scrollView.contentOffset;
    NSLog(@"%f,%f",point.x,point.y);
    // 从中可以读取contentOffset属性以确定其滚动到的位置。

    // 注意:当ContentSize属性小于Frame时,将不会出发滚动

}
// 当scrollView缩放时,调用该方法。在缩放过程中,回多次调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidScroll");
    float value=scrollView.zoomScale;
    NSLog(@"%f",value);

}
// 当开始滚动视图时,执行该方法。一次有效滑动(开始滑动,滑动一小段距离,只要手指不松开,只算一次滑动),只执行一次。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

    NSLog(@"scrollViewWillBeginDragging");

}
// 滑动scrollView,并且手指离开时执行。一次有效滑动,只执行一次。
// 当pagingEnabled属性为YES时,不调用,该方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{

    NSLog(@"scrollViewWillEndDragging");

}
// 滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。
// decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

    NSLog(@"scrollViewDidEndDragging");
    if (decelerate) {
        NSLog(@"decelerate");
    }else{
         NSLog(@"no decelerate");

    }

    CGPoint point=scrollView.contentOffset;
    NSLog(@"%f,%f",point.x,point.y);

}
// 滑动减速时调用该方法。
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{

    NSLog(@"scrollViewWillBeginDecelerating");
    // 该方法在scrollViewDidEndDragging方法之后。

}
// 滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidEndDecelerating");

    [_scrollView setContentOffset:CGPointMake(0, 500) animated:YES];

}
// 当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidEndScrollingAnimation");
    // 有效的动画方法为:
    //    - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 方法
    //    - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法

}
// 返回将要缩放的UIView对象。要执行多次
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

    NSLog(@"viewForZoomingInScrollView");
    return  self.imgView;

}
// 当将要开始缩放时,执行该方法。一次有效缩放,就只执行一次。
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{

    NSLog(@"scrollViewWillBeginZooming");

}
// 当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

    NSLog(@"scrollViewDidEndZooming");

}
// 指示当用户点击状态栏后,滚动视图是否能够滚动到顶部。需要设置滚动视图的属性:_scrollView.scrollsToTop=YES;
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{

    return YES;

}
// 当滚动视图滚动到最顶端后,执行该方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{

    NSLog(@"scrollViewDidScrollToTop");
}

Tip:判断uiscrollview是向上滚动还是向下滚动

int _lastPosition;    //A variable define in headfile  

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    int currentPostion = scrollView.contentOffset.y;
    if (currentPostion - _lastPosition > 25) {
        _lastPosition = currentPostion;
        NSLog(@"ScrollUp now");
    }
    else if (_lastPosition - currentPostion > 25)
    {
        _lastPosition = currentPostion;
        NSLog(@"ScrollDown now");
    }
}
// 25 可以是任意数字,可根据自己的需要来设定。
// 升级版:到达顶部或底部时不会反弹
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    int currentPostion = scrollView.contentOffset.y;

    if (currentPostion - _lastPosition > 20  && currentPostion > 0) {        //这个地方加上 currentPostion > 0 即可)
        _lastPosition = currentPostion;

        NSLog(@"ScrollUp now");
    }
    else if ((_lastPosition - currentPostion > 20) && (currentPostion  <= scrollView.contentSize.height-scrollView.bounds.size.height-20) ){
        _lastPosition = currentPostion;

        NSLog(@"ScrollDown now");
    }
}

 

时间: 2024-10-01 05:15:11

iOS UIScrollview代理方法的相关文章

iOS UITableView代理方法详解

原 iOS UITableView代理方法详解 IOS UITableView的代理方法详解(http://my.oschina.net/u/2340880/blog/404958) 一.补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法作了总结,对上一篇博客进行了补充. 二.UITableViewDataSourc(数据源代理) 1.必

iOS textfield代理方法调用的先后顺序(转)

查看原文 今天通过自己的学习把textfield的代理方法全部罗列出来,先后调用顺序做了一下验证. 操作方法是,打开界面-->点击textField-->输入'abc'-->点击'x'清除按钮-->点击键盘'换行'-->点击'完成' log日志: 4 2 4 1 1 1 5 7 6 3 #pragma mark - textField delegate - (BOOL)textField:(UITextField *)textField shouldChangeCharact

IOS UITableview代理方法总结

tableview的datasource代理 @required的两个数据源方法 1.返回每个 session 中 cell 的个数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 2.创建tableviewCell(注意复用) - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtI

IOS uitableview代理方法

#pragma mark - Table View//设置section的个数- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    return 1;}//设置每个section 的行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return [dataArryLis

iOS 设计中关于UIScrollViewDelegate的几个代理方法的简单介绍

在ios设计的过程中,对于UIScrollView这个控件对于开发者而言都不会陌生,在处理UI界面的时候我们经常会用到UIScrollView,既然用到了UIScrollView,那么UIScrollView的几个代理方法就无法避免的被使用了.本文并不介绍UIScrollView的相关属性,就介绍几个代理方法. / 此方法在scrollView滑动时会被调用多次,只要scrollView.contentOffset发生改变就会被调用 / (void)scrollViewDidScroll:(UI

UI第七讲.UIScrollView , UIScrollview的常用代理方法, UIPageControl的使用, UIPageControl与UIScrollView的结合使用

一.UIScrollView的常用属性 UIScrollView是可以滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能. UIScrollView是所有滚动视图的基类.以后的UITableView,UITextView等视图都是继承于该类. 使用场景:显示不下(单张?大图);内容太多(图?文混排);滚动头条(图片);相册等 UIScrollView(滚动视图)的样式: 常用属性: 1.UIScrollView的核心功能 UIScrollview主要专长于

UIScrollView基本属性/代理方法

-(void)viewDidload {[super viewDidLoad]; scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; scrollView.backgroundColor = [UIColor redColor]; // 是否支持滑动最顶端 scrollView.scrollsToTop = NO; scrollView.delegate = self; // 设置内容大小 s

ios网络学习------2 用非代理方法实现异步post请求

#pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,因为一般来说属性都是和界面关联的,我们可以通过参数的方式来使用属性 #pragma mark post登录方法 -(void)loginWithPostWithName:(NSString *)userName pwd:(NSString *)pwd { //1确定地址NSURL NSString *urlString = [NSString stringWithFormat:@"www.baidu.com"];

UIScrollView常用属性和代理方法

UIScrollView常用属性. 1 //在设置最大滚动距离时 一般用到最后一个控件的最大Y值 或 X值 CGRectGetMaxX 2 //点进去浏览,分别有最大最小x,最大最小y,最大最小中点(CGRectMidX ....MidY) 3 CGFloat maxY = CGRectGetMaxY(self.lastBtn.frame) + 10; 4 //设置滚动区域,x=0时只能上下滚动,y=0时左右滚动 5 self.scrollView.contentSize = CGSizeMak