CAScrollView(滚动视图)

2018-08-29 17:07 更新

类说明

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 属性介绍        

TouchEnabledAtSubviews

类型:bool

解释:触摸事件启用在子视图。is/set{}。


ViewSize

类型:DSize

解释:设置容器的内部大小。set/get{}。


Bounces

类型:bool

解释:设置是否滚动回弹。is/set{}。


BounceHorizontal

类型:bool

解释:水平方向回弹。is/set{}。


BounceVertical

类型:bool

解释:竖直方向回弹。is/set{}。


ShowsHorizontalScrollIndicator

类型:bool

解释:设置是否显示水平滚动条。is/set{}。


ShowsVerticalScrollIndicator

类型:bool

解释:设置是否显示竖直滚动条。is/set{}。


MaximumZoomScale

类型:float

解释:最大缩放比例,默认值为1。set/get{}。


MinimumZoomScale

类型:float

解释:最小缩放比例,默认值为1。set/get{}。


ZoomScale

类型:float

解释: 滑动层缩放比例, 默认值为1。get{}。


ScrollViewDelegate

类型:CAScrollViewDelegate*

解释:滚动视图代表。set/get{}。


ShowsScrollIndicators

类型:bool

解释:显示滚动指示器。is/set{}。


HeaderRefreshView

类型:CAPullToRefreshView*

解释:头部刷新试图。set/get{}。


FooterRefreshView

类型:CAPullToRefreshView*

解释:尾部刷新试图。set/get{}。


Tracking

类型:bool

解释:查看 ScrollView 是否正在滚动。is{}。

        

Zooming

类型:bool

解释:查看 ScrollView 是否正在进行缩放控制。is{}。


Decelerating

类型:bool

解释:查看 ScrollView 是否在惯性运动中。is{}。


MultitouchGesture

类型:MultitouchGesture

解释:多点触控手势,set/get{}。


CAScrollView 方法介绍

void setContentOffset(const DPoint& offset, bool animated);

返回值:void

参数:

类型参数名说明
const DPoint&offset偏移量
boolanimated是否播放动画

解释:设置内容偏移量


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子视图
intz数量

解释:插入子视图


void removeAllSubviews();

返回值:void

参数:

解释:删除所有子视图


void removeSubview(CAView* subview);  

返回值:void

参数:

类型参数名说明
CAView*subview子视图

解释:删除子视图


CAView* getSubviewByTag(int aTag); 

返回值:CAView*

参数:

类型参数名说明
intaTag子视图标签

解释:通过标签获取子视图


void removeSubviewByTag(int tag);

返回值:void

参数:

类型参数名说明
inttag子视图标签

解释:通过标签删除子视图


CAView* getSubviewByTag(int aTag);

返回值:CAView* 

参数:

类型参数名说明
intaTag子视图标签

解释:过标签获取子视图


DPoint getContentOffset();

返回值:DPoint

参数:

解释:获得内容偏移量


void setZoomScale(float zoom);

返回值:void

参数:

类型参数名说明
floatzoom缩放比例

解释:设置缩放比例


virtual bool isReachBoundaryLeft();

返回值:bool

参数:

解释:是否到达左边界


virtual bool isReachBoundaryRight();

返回值:bool

参数:

解释:是否到达右边界


virtual bool isReachBoundaryUp();

返回值:bool

参数:

解释:是否到达上边界


virtual bool isReachBoundaryDown();

返回值:bool

参数:

解释:是否到达下边界


void endHeaderRefresh();

返回值:void

参数:

解释:端头刷新


void endFooterRefresh();

返回值:void

参数:

解释:端尾刷新


DPoint getContentOffset();

返回值: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触摸
floatoff_xx坐标偏移量
floatoff_yy坐标偏移量
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 init();

返回值:virtual bool

参数:

解释:初始化


void startPullToHeaderRefreshView();

返回值:void

参数:

解释:开始顶端刷新视图


virtual void switchPCMode(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar开关

解释:开关PC模式

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号