CAPageView(頁面切換)

2018-09-08 15:36 更新

類說明

CAPageView用于實現分頁、翻頁效果。CAPageView為我們提供了橫向和豎直兩個方向的樣式。我也可以通過繼承CAPageViewDelegate來實現對CAPageView的監(jiān)聽。


CAPageView 屬性(點擊查看方法介紹)

屬性說明
PageViewDirection頁面瀏覽方向
PageViewDelegate頁面視圖代表
CurrPage當前頁
Spacing間距


CAPageView 方法(點擊查看方法介紹)

方法說明
createWithFrame創(chuàng)建,并指定其Frame,默認Frame為(0,0,0,0)
createWithCenter創(chuàng)建,并指定其Center,默認Center為(0,0,0,0)
setCurrPage設置顯示指定頁
getPageCount獲取頁面總數
setViews添加存放View的CADeque容器
setViews添加存放View的CAVector容器
getSubViewAtIndex通過索引獲取子視圖
setShowsScrollIndicators設置顯示滾動條
init
初始化


我來看一下代碼實例:
首先我們需要繼承CAPageViewDelegate實現監(jiān)聽函數。我們在.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();
         
    //創(chuàng)建CALabel
    CALabel* labelView = CALabel::createWithFrame(winRect);
     
    //設置為居中
    labelView->setTextAlignment(CATextAlignmentCenter);
    labelView->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
    labelView->setFontSize(75);
     
    //設置文本內容
    labelView->setText(UTF8("第一個View"));
         
    //創(chuàng)建CAImageView
    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));
     
    //設置顯示區(qū)域
    imageView->setFrame(winRect);
     
    //創(chuàng)建一個藍色的View
    CAView* view = CAView::createWithColor(CAColor_blue);
         
    //設置顯示區(qū)域
    view->setFrame(winRect);
     
    //創(chuàng)建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);
         
    /*創(chuàng)建一個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);
        
    //設置監(jiān)聽
    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);
}

我們創(chuàng)建了一個含有三個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類型

解釋:創(chuàng)建,并指定其Frame,默認Frame為(0,0,0,0)

    

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

返回值:CAPageView*

參數:

類型參數名說明
CCRect&rect大小
CAPageViewDirection&
type類型

解釋:創(chuàng)建,并指定其Center,默認Center為(0,0,0,0)


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

返回值:void

參數:

類型參數名說明
intvar頁面數
boolanimated動畫
boollistener監(jiān)聽

解釋:設置顯示指定頁

    

unsigned int getPageCount();

返回值:unsigned int

參數:

解釋:獲取頁面總數


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

返回值:void

參數:

類型參數名說明
CADeque<CAView*>&vecCADeque容器

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


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

返回值:void

參數:

類型參數名說明
CAVector<CAView*>&vecCAVector容器

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


CAView* getSubViewAtIndex(int index);

返回值:CAView*

參數:

類型參數名說明
intindex索引

解釋:通過索引獲取子視圖


virtual void setShowsScrollIndicators(bool var);

返回值:void

參數:

類型參數名說明
boolvar是否顯示滾動條

解釋:設置顯示滾動條


bool init();

返回值:bool

參數:

解釋:初始化







以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號