文章目录
简介
scrollView是在一定可视范围内通过滚动看到更大范围的方法,可视的范围是绑定在滚动视图上的容器。
容器有两个界限,一个是容器偏移,一个是为了回弹设置的延伸的长度。
基础变量
ScrollViewDelegate
设置委托函数实例,继承并重写下面的方法,可以在滚动和缩放时使用回调函数
virtual void scrollViewDidScroll(ScrollView* view) {
};
virtual void scrollViewDidZoom(ScrollView* view) {
};
//使用
scrollView->setDelegate(this); ///<添加委托
virtual void scrollViewDidScroll(ScrollView* view)
{
/* */
}
Direction
设置滚动的方向
enum class Direction
{
NONE = -1,
HORIZONTAL = 0,
VERTICAL,
BOTH
};
_dragging
是否开始拖动的标志,在onTouchBegan时会设为true,表示开始拖动,在onTouchEnded、onTouchCancelled中设为false
_container
作为scrollView的子节点,存放显示的所有内容,滚动视图的滚动框就是在这个上面进行滚动的。Inset
inset分为_minInset和_maxInset,如果设置了回弹会被设置成偏移边界加上可视范围的20%
_touchMoved
标记正在拖动的标志,在onTouchMoved时被设为true,在onTouchEnded、onTouchCancelled中设为false
_bounceable
回弹,在初始化时默认被设为true,是指在滑动到container的边界之后,会继续滑动一截最后再弹回到边界处的一种效果。
_touchLength
用来计算两个触摸点之间的距离,会换算成缩放的倍数
#方法
create
创建的时候可以将设置好的设置好的container作为参数,将容器绑定到滚动视图中,然后调用initWithViewSize方法来初始化滚动视图
initWithViewSize
初始化时调用
如果没有传入container参数会创建一个
setContentSize
这个方法主要是为了设置容器的大小,同时也刷新了Inset的大小,在调用setContentSize之前,minInset和maxInset都是0,没有被设置,setContentSize会调用updateInset方法,对minInset和maxInset进行了设置,让回弹可以进行,让deaccelerateScrolling可以获得正确的值。
void ScrollView::setContentSize(const Size & size)
{