CAScrollView(滚动视图)
类说明
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
TouchEnabledAtSubviews | 触摸事件启用在子视图 |
ViewSize | 设置容器的内部大小 |
Bounces | 设置是否滚动回弹 |
BounceHorizontal | 水平方向回弹 |
BounceVertical | 竖直方向回弹 |
ShowsHorizontalScrollIndicator | 设置是否显示水平滚动条 |
ShowsVerticalScrollIndicator | 设置是否显示竖直滚动条 |
MaximumZoomScale | 最大缩放比例,默认值为1 |
MinimumZoomScale | 最小缩放比例,默认值为1 |
ZoomScale | 滑动层缩放比例, 默认值为1 |
ScrollViewDelegate | 滚动视图代表 |
ShowsScrollIndicators | 显示滚动指示器 |
HeaderRefreshView | 头部刷新试图 |
FooterRefreshView | 尾部刷新试图 |
Tracking | 是否正在滚动 |
Decelerating | 是否在惯性运动中 |
MultitouchGesture | 多点触控手势 |
Zooming | 是否正在进行缩放控制 |
CAScrollView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setContentOffset | 设置相对于视图顶部的偏移量 |
setBackGroundImage | 设置背景图片 |
setBackGroundColor | 设置背景颜色 |
addSubview | 添加子视图 |
insertSubview | 插入子视图 |
removeAllSubviews | 删除所有子视图 |
removeSubview | 删除子视图 |
removeSubviewByTag | 通过标签删除视图 |
getSubviewByTag | 通过标签获取视图 |
setContentOffset | 获得内容偏移 |
setZoomScale | 设置缩放比例 |
isReachBoundaryLeft | 是否到达左边界 |
isReachBoundaryRight | 是否到达右边界 |
isReachBoundaryUp | 是否到达上边界 |
isReachBoundaryDown | 是否到达下边界 |
endHeaderRefresh | 端头刷新 |
endFooterRefresh | 端尾刷新 |
getContentOffset | 获取相对于视图顶部的偏移量 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseScrollWheel | 鼠标滚轮 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并设置其Center,默认Center为(0,0,0,0) |
init | 初始化 |
startPullToHeaderRefreshView | 开始顶端刷新视图 |
switchPCMode | 开关PC模式 |
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView相对于前面的控件来说,使用比较复杂。但我们清楚了每个函数的意义之后,便可以很清晰的构建出我们所需要的CAScrollView。这里我们就举一个展示文本的一个CAScrollView。
首先,我们希望能够监听到CAScrollView的变化,那么我则需要去实现CAScrollViewDelegate,我们修该FirstViewController.h,添加要实现的函数如下:
#include <iostream>
#include "CrossApp.h"
USING_NS_CC;
class FirstViewController: public CAViewController ,public CAScrollViewDelegate
{
public:
FirstViewController();
virtual ~FirstViewController();
//触摸滚动时调用
virtual void scrollViewDidMoved(CAScrollView* view);
//触摸滚动停止时调用
virtual void scrollViewStopMoved(CAScrollView* view);
//滚动时调用(包括惯性滚动时)
virtual void scrollViewDidScroll(CAScrollView* view);
//开始滚动时调用
virtual void scrollViewWillBeginDragging(CAScrollView* view);
//结束滚动时调用
virtual void scrollViewDidEndDragging(CAScrollView* view);
//缩放时调用
virtual void scrollViewDidZoom(CAScrollView* view);
//头部开始刷新时调用
virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view);
//尾巴开始刷新时调用
virtual void scrollViewFooterBeginRefreshing(CAScrollView* view);
protected:
void viewDidLoad();
void viewDidUnload();
}
然后我们就要在FirstViewController.cpp中去实现这写代理函数:
void FirstViewController::viewDidLoad()
{
// 获得屏幕大小
DSize size = this->getView()->getBounds().size;
//设置背景颜色为黑色
this->getView()->setColor(CAColor_black);
//创建scrollView
CAScrollView* scrollView = CAScrollView::createWithCenter(DRect(size.width*0.5,size.height*0.5 - 270,size.width * 0.5, 100));
//CACScrollView容器的大小
scrollView->setViewSize(DSize(size.width, 200));
//设置背景颜色
scrollView->setBackGroundColor(CAColor_orange);
//设置背景图片
//scrollView->setBackGroundImage(CAImage::create("r/HelloWorld.png"));
//水平方向是否回弹
scrollView->setBounceHorizontal(false);
//竖直方向是否回弹
scrollView->setBounceVertical(true);
//是否滚动回弹,控制竖直和水平方向,默认为ture
//scrollView->setBounces(false);
scrollView->setScrollViewDelegate(this);
this->getView()->addSubview(scrollView);
//创建label
CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200));
//设置水平剧中
label->setTextAlignment(CATextAlignmentCenter);
//设置竖直剧中
label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
//设置字体大小
label->setFontSize(18 * CROSSAPP_ADPTATION_RATIO);
//设置文本内容
label->setText(UTF8("CrossApp具有强大的跨平台性能,并且具有离线能力,可以进行离线操作。对开发者和用户入门要求较低,且功能强大。综合效率高,开发者可以根据实际情况,考虑各方面因素来选择合适的开发解决方案。"));
//设置文本颜色
label->setColor(CAColor_blue);
//将label添加到scrollView
scrollView->addSubview(label);
}
//触摸滚动时调用
void FirstViewController::scrollViewDidMoved(CAScrollView* view)
{
CCLog("DidMoved-->");
}
//触摸滚动停止时调用
void FirstViewController::scrollViewStopMoved(CAScrollView* view)
{
CCLog("StopMoved-->");
}
//滚动时调用(包括惯性滚动时)
void FirstViewController::scrollViewDidScroll(CAScrollView* view)
{
CCLog("DidMScroll-->");
}
//开始滚动时调用
void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view)
{
CCLog("BeginDragging-->");
}
//结束滚动时调用
void FirstViewController::scrollViewDidEndDragging(CAScrollView* view)
{
CCLog("DidEndDragging-->");
}
//缩放时调用
void FirstViewController::scrollViewDidZoom(CAScrollView* view)
{
CCLog("DidZoom-->");
}
//头部开始刷新时调用
void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view)
{
CCLog("HeaderBeginRefreshing-->");
}
//尾巴开始刷新时调用
void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view)
{
CCLog("FooterBeginRefeshing-->");
}
CAScrollView 属性介绍
类型:bool
解释:触摸事件启用在子视图。is/set{}。
类型:DSize
解释:设置容器的内部大小。set/get{}。
类型:bool
解释:设置是否滚动回弹。is/set{}。
类型:bool
解释:水平方向回弹。is/set{}。
类型:bool
解释:竖直方向回弹。is/set{}。
ShowsHorizontalScrollIndicator
类型:bool
解释:设置是否显示水平滚动条。is/set{}。
类型:bool
解释:设置是否显示竖直滚动条。is/set{}。
类型:float
解释:最大缩放比例,默认值为1。set/get{}。
类型:float
解释:最小缩放比例,默认值为1。set/get{}。
类型:float
解释: 滑动层缩放比例, 默认值为1。get{}。
类型:CAScrollViewDelegate*
解释:滚动视图代表。set/get{}。
类型:bool
解释:显示滚动指示器。is/set{}。
类型:CAPullToRefreshView*
解释:头部刷新试图。set/get{}。
类型:CAPullToRefreshView*
解释:尾部刷新试图。set/get{}。
类型:bool
解释:查看 ScrollView 是否正在滚动。is{}。
类型:bool
解释:查看 ScrollView 是否正在进行缩放控制。is{}。
类型:bool
解释:查看 ScrollView 是否在惯性运动中。is{}。
类型:MultitouchGesture
解释:多点触控手势,set/get{}。
CAScrollView 方法介绍
void setContentOffset(const DPoint& offset, bool animated);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | offset | 偏移量 |
bool | animated | 是否播放动画 |
解释:设置内容偏移量
void setBackGroundImage(CAImage* image);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 背景图像 |
解释:设置背景图像
void setBackGroundColor(const CAColor4B &color);
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 背景颜色 |
解释:设置背景颜色
virtual void addSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:添加子视图
virtual void insertSubview(CAView* subview, int z);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
int | z | 数量 |
解释:插入子视图
返回值:void
参数:
解释:删除所有子视图
void removeSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:通过标签获取子视图
void removeSubviewByTag(int tag);
返回值:void
参数:
类型 | 参数名 | 说明 |
int | tag | 子视图标签 |
解释:通过标签删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:过标签获取子视图
返回值:DPoint
参数:
解释:获得内容偏移量
void setZoomScale(float zoom);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | zoom | 缩放比例 |
解释:设置缩放比例
virtual bool isReachBoundaryLeft();
返回值:bool
参数:
解释:是否到达左边界
virtual bool isReachBoundaryRight();
返回值:bool
参数:
解释:是否到达右边界
virtual bool isReachBoundaryUp();
返回值:bool
参数:
解释:是否到达上边界
virtual bool isReachBoundaryDown();
返回值:bool
参数:
解释:是否到达下边界
返回值:void
参数:
解释:端头刷新
返回值:void
参数:
解释:端尾刷新
返回值:DPoint
参数:
解释:获取相对于视图顶部的偏移量
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
virtual void mouseScrollWheel(CATouch* pTouch, float off_x, float off_y, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸 |
float | off_x | x坐标偏移量 |
float | off_y | y坐标偏移量 |
CAEvent* | pEvent | 事件 |
解释:鼠标滚轮
static CAScrollView* createWithFrame(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAScrollView* createWithCenter(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并设置其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
void startPullToHeaderRefreshView();
返回值:void
参数:
解释:开始顶端刷新视图
virtual void switchPCMode(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 开关 |
解释:开关PC模式
更多建议: