Categories: CrossApp 教程

CAPageView(页面切换)

类说明

CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。


CAPageView 属性(点击查看方法介绍)

属性 说明
PageViewDirection 页面浏览方向
PageViewDelegate 页面视图代表
CurrPage 当前页
Spacing 间距

CAPageView 方法(点击查看方法介绍)

方法 说明
createWithFrame 创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter 创建,并指定其Center,默认Center为(0,0,0,0)
setCurrPage 设置显示指定页
getPageCount 获取页面总数
setViews 添加存放View的CADeque容器
setViews 添加存放View的CAVector容器
getSubViewAtIndex 通过索引获取子视图
setShowsScrollIndicators 设置显示滚动条
init
初始化

我来看一下代码实例:
首先我们需要继承CAPageViewDelegate实现监听函数。我们在.h文件中添加如下代码:

#include <iostream>
#include "CrossApp.h"
 
USING_NS_CC;
 
class FirstViewController : public CAViewController, public  CAPageViewDelegate
{
     
public:
    FirstViewController();
     
    virtual ~FirstViewController();
     
    //切换开始时调用
    virtual void pageViewDidBeginTurning(CAPageView* pageView);
     
    //切换结束时调用
    virtual void pageViewDidEndTurning(CAPageView* pageView);
     
    //选择当前的切换页时调用
    virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point);
protected:
     
    void viewDidLoad();
     
    void viewDidUnload();
     
};

然后在.cpp中实现逻辑:

void FirstViewController::viewDidLoad()
{
    //生命一个CAVector作为添加到PageView的容器
    CAVector<CAView*> viewVector;
     
    //获得屏幕的rect
    DRect winRect = this->getView()->getBounds();
         
    //创建CALabel
    CALabel* labelView = CALabel::createWithFrame(winRect);
     
    //设置为居中
    labelView->setTextAlignment(CATextAlignmentCenter);
    labelView->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
    labelView->setFontSize(75);
     
    //设置文本内容
    labelView->setText(UTF8("第一个View"));
         
    //创建CAImageView
    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));
     
    //设置显示区域
    imageView->setFrame(winRect);
     
    //创建一个蓝色的View
    CAView* view = CAView::createWithColor(CAColor_blue);
         
    //设置显示区域
    view->setFrame(winRect);
     
    //创建CALabel
    CALabel* lastLabel = CALabel::createWithFrame(winRect);
         
    //设置居中
    lastLabel->setTextAlignment(CATextAlignmentCenter);            
    lastLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
    lastLabel->setFontSize(75);
     
    //设置显示文本
    lastLabel->setText(UTF8("最后一个View"));
         
    //将lastLabel添加到view
    view->addSubview(lastLabel);
         
    //将上面的三个控件放入到CAVector容器内
    viewVector.pushBack(labelView);
    viewVector.pushBack(imageView);
    viewVector.pushBack(view);
         
    /*创建一个CAPageView并设置为水平滚动
    CAPageViewDirectionHorizontal:水平
    CAPageViewDirectionVertical:竖直
    */         
    CAPageView* pageViewTest = CAPageView::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5, winRect.size.width, winRect.size.height), CAPageView::CAPageViewDirectionHorizontal);
        
    //设置监听
    pageViewTest->setPageViewDelegate(this);
     
    //将CAVector添加到pageViewTest
    pageViewTest->setViews(viewVector);
    pageViewTest->getPageCount();
         
    //将pageViewTest添到屏幕显示
    this->getView()->addSubview(pageViewTest);
     
}
 
void FirstViewController::viewDidUnload()
{
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
 
void FirstViewController::pageViewDidBeginTurning(CAPageView* pageView)
{
    CCLog("Begin--->");
}
 
void FirstViewController::pageViewDidEndTurning(CAPageView* pageView)
{
    CCLog("End--->");
}
 
void FirstViewController::pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point)
{
    CCLog("Index:%d",index);
}

我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。


CAPageView 属性说明

PageViewDirection

类型:CAPageViewDirection

解释:页面浏览方向。get{}。

    

PageViewDelegate

类型:CAPageViewDelegate*

解释:页面视图代表。set/get{}。

CurrPage

类型:int

解释:当前页。get{}。

Spacing

类型:int

解释:间距。set/get{}。

CAPageView 方法说明

static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型 参数名 说明
CCRect& rect 大小
CAPageViewDirection&
type 类型

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)

    

static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型 参数名 说明
CCRect& rect 大小
CAPageViewDirection&
type 类型

解释:创建,并指定其Center,默认Center为(0,0,0,0)

void setCurrPage(int var, bool animated, bool listener = false);

返回值:void

参数:

类型 参数名 说明
int var 页面数
bool animated 动画
bool listener 监听

解释:设置显示指定页

    

unsigned int getPageCount();

返回值:unsigned int

参数:

解释:获取页面总数

void setViews(const CADeque<CAView*>& vec);

返回值:void

参数:

类型 参数名 说明
CADeque<CAView*>& vec CADeque容器

解释:添加存放View的CADeque容器

void setViews(const CAVector<CAView*>& vec);

返回值:void

参数:

类型 参数名 说明
CAVector<CAView*>& vec CAVector容器

解释:添加存放View的CAVector容器

CAView* getSubViewAtIndex(int index);

返回值:CAView*

参数:

类型 参数名 说明
int index 索引

解释:通过索引获取子视图

virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型 参数名 说明
bool var 是否显示滚动条

解释:设置显示滚动条


bool init();

返回值:bool

参数:

解释:初始化







admin

这个人很懒,什么都没有留下~

Share
Published by
admin

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

7 天 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

4 周 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago