Storyboard学习六(ScrollView)

本文详细介绍了UIScrollView的使用方法,包括如何创建UIScrollView实例,配置UIScrollView的各种属性,如pagingEnabled、contentSize等,以及实现UIScrollViewDelegate中的关键方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ScrollView
UIScrollView就是可以滚动的视图,常常用在图片显示(缩放,滚动等),文本显示等,是一个非常有用的控件。

    //声明一个scrollView
    scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 50, widthOut, self.view.frame.size.height-50)];
    scrollView.backgroundColor = [UIColor redColor];

    //任意滑动
    scrollView.pagingEnabled = NO;

    //滑动过程中显示水平滚动条(如果有)
    scrollView.showsHorizontalScrollIndicator = YES;

    //滑动过程中显示垂直滚动条(如果有)
    scrollView.showsVerticalScrollIndicator = YES;

    //点击顶部的状态栏滚动到首
    scrollView.scrollsToTop = YES;
    scrollView.delegate = self;

    [self.view addSubview:scrollView];

要使用 UIScrollView,则必须实现 UIScrollViewDelegate,该Delegate定义如下:

@protocol UIScrollViewDelegate<NSObject>  

@optional  

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;                                               // any offset changes  
- (void)scrollViewDidZoom:(UIScrollView *)scrollView __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2); // any zoom scale changes  

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;                              // called on start of dragging (may require some time and or distance to move)  
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; // called on finger up if user dragged. decelerate is true if it will continue moving afterwards  

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   // called on finger up as we are moving  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      // called when scroll view grinds to a halt  

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating  

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;     // return a view that will be scaled. if delegate returns nil, nothing happens  
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2); // called before the scroll view begins zooming its content  
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale; // scale between minimum and maximum. called after any 'bounce' animations  

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;   // return a yes if you want to scroll to the top. if not defined, assumes YES  
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;      // called when scrolling animation finished. may be called immediately if already at top  

@end  

有几个是比较重要的:
scrollViewDidScroll:scrollView只要在滚动就会触发该方法(无论是被用户拖动还是在拖动后scrollView由于惯性继续滚动一点距离)
scrollViewWillBeginDragging:scrollView被用户拖动前就会触发该方法

scrollViewDidEndDragging:scrollView被用户拖动结束后就会触发该方法

scrollViewWillBeginDecelerating:scrollView在拖动后继续滚动前就会触发该方法

scrollViewDidEndDecelerating:scrollView在拖动后继续滚动后停止就会触发该方法

scrollViewShouldScrollToTop:返回YES或NO,表示是否支持用户点击屏幕顶端的状态条后scrollView滚动到顶端(默认YES)

scrollViewDidScrollToTop:用户点击屏幕顶端的状态条后scrollView滚动到顶端后会触发该方法(scrollViewShouldScrollToTop如果返回NO,则该方法不会被触发)

UIScrollView的常用属性如下:

scrollView.pagingEnabled = NO;  

//划动过程中显示水平滚动条(如果有)  
scrollView.showsHorizontalScrollIndicator = YES;  

//划动过程中显示垂直滚动条(如果有)  
scrollView.showsVerticalScrollIndicator = YES;  

//点击顶部的状态栏滚动到首  
scrollView.scrollsToTop = YES;  
scrollView.delegate = self;  
scrollView.contentSize = CGRect  

pagingEnabled:是否以整数倍的UIScrollView大小滚动(如果是用于图片类的UIScrollView,该值应该设置为YES,如果是用于显示文本类的UIScrollView或者类似与本例的允许用户滚动到任意位置的情况时应该设置为NO)
contentOffset:UIScrollView中content的左上角坐标
contentSize:UIScrollView中content的大小,该值与UIScrollView的大小决定滚动条的长短
decelerating:UIScrollView在拖动放手后是否仍在由于惯性继续滚动中
dragging:UIScrollView是否正在被用户拖动
showsHorizontalScrollIndicator:是否显示水平滚动条
showsVerticalScrollIndicator:是否显示垂直滚动条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值