属性
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{
}