iOS开发-UIScrollView详解

来源:互联网 发布:pmc编程 编辑:程序博客网 时间:2024/06/05 19:25

属性

directionalLockEnabled

用于拖拽的时候锁定滚动方向 默认为NO即不锁定

bounces

用于指示scrollView的内容边界能否超出scrollView边界 默认为YES,即有回弹效果

alwaysBounceVertical

垂直方向contentView高度小于scrollView高度时仍能拖拽(前提是bouncs属性为YES)

alwaysBounceVertical

水平方向contentView高度小于scrollView高度时仍能拖拽(前提是bouncs属性为YES)

scrollEnabled

是否允许拖拽滚动

pagingEnabled

是否允许翻页滚动

indicatorStyle
typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {    UIScrollViewIndicatorStyleDefault,     // black with white border. good against any background    UIScrollViewIndicatorStyleBlack,       // black only. smaller. good against a white background    UIScrollViewIndicatorStyleWhite        // white only. smaller. good against a black background};

设置指示条类型

scrollIndicatorInsets

设置指示条缩进量

decelerationRate
UIKIT_EXTERN const CGFloat UIScrollViewDecelerationRateNormal NS_AVAILABLE_IOS(3_0);  UIKIT_EXTERN const CGFloat UIScrollViewDecelerationRateFast

用于设置拖拽停止时的减速速率 系统提供两个静态常量

scrollsToTop

点击状态栏是否滚动到顶部,默认为YES

panGestureRecognizer

可以获取scrollView内置的滑动手势识别器进行相关配置

keyboardDismissMode

滚动时释放键盘(设置为UIScrollViewKeyboardDismissModeOnDrag会有警告,原因好像是因为连续两次释放键盘,一次是scrollView拖动释放,一次是textField失去焦点释放,尚为找到解决办法)

minimumZoomScale

最小缩放倍数

maximumZoomScale

最大缩放倍数

delegate

代理对象

delaysContentTouches

触摸直接传递给子视图,没有150ms延迟等待

canCancelContentTouches

触摸一旦传递给子视图,不会再传回给contentView,即不会再滚动

tracking

只读属性,是否正在触摸

dragging

只读属性,是否正在拖拽

decelerating

只读属性,是否正在减速

方法

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

滚动到指定的contentOffSet位置

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;

滚动到使指定区域可见的位置(就近原则)

- (void)flashScrollIndicators; 

短暂显示指示器

- (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated;

缩放指定子视图到指定倍数

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated

缩放指定子视图到指定区域

UIScrollViewDelegate

/*滚动相关*///scrollView滚动时,就调用该方法。任何offset值改变都调用该方法。即滚动过程中,调用多次- (void)scrollViewDidScroll:(UIScrollView *)scrollView{}//拖拽scrollView时调用此方法- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}//停止拖拽即手指离开屏幕那一刹那时调用//velocity 停止一刻的滑动速度 单位为point/毫秒//targetContentOffset 最终停止时的contentOffset- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{}//停止拖拽即手指离开屏幕那一刹那时调用//decelerate 停止拖拽后是否继续滑动- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}// 滑动将要减速时调用(不包括拖拽过程中的减速)- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{}// 滚动视图减速完成,滚动停止时调用- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}//当滚动视图动画完成后,调用该方法(即调用setContentOffset/scrollRectVisible:animated:并动画执行完毕后调用,对拖拽引起的滚动无效)- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}/*缩放相关*/// 当scrollView缩放时,调用该方法。在缩放过程中,回多次调用- (void)scrollViewDidZoom:(UIScrollView *)scrollView{}// 返回将要缩放的UIView对象(必须是self.scrollView的子视图),缩放过程中要执行多次。若返回nil则缩放过程什么都不发生- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{    return self.tfZoom;}//即将缩放,只执行一次- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view{}//缩放结束,只执行一次- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale{}/*点击状态栏滚动到顶端*///只有当scrollsToTop属性为yes,且该方法返回yes时,点击状态栏才能滚回顶端。默认返回yes- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{    return YES;}//点击状态栏滚动到顶端后调用- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{}
0 0