课程表

入门与环境搭建

简单控件的使用

视图控制

调用、存储、网络和动画

其他控件的使用

工具箱
速查手册

自动化布局容器

当前位置:免费教程 » 移动开发 » CrossApp

类说明:

CAAutoCollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。


CAAutoCollectionView的使用方法和CATableView比较类似,我们也要分别使用:CAAutoCollectionView、CACollectionViewCell、CAAutoCollectionViewDelegate、CAAutoCollectionViewDataSource来构建。

CAAutoCollectionView是表格视图的容器,是容器的载体。

CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。

CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。

CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。


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

属性说明
CollectionViewDataSource添加数据代理
CollectionViewDelegate添加交互代理
CollectionHeaderView添加头部视图
CollectionFooterView添加尾部视图
CollectionHeaderHeight设置头部的高度
CollectionFooterHeight设置尾部的高度
CollectionViewOrientationCollectionView方向取向
CollectionViewCellHoriAlignCollectionView的Cell水平对齐
CollectionViewCellVertAlignCollectionView的Cell垂直对齐
HoriCellIntervalcell水平间隔
VertCellIntervalcell垂直间隔
HoriMargins水平边距
VertMargins垂直边距
AllowsSelection允许选择
AllowsMultipleSelection允许多个选择
AlwaysTopSectionHeader总是顶部的标题
AlwaysBottomSectionFooter总是底部的节尾


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

说明说明
createWithFrame创建,并指定其Frame
createWithCenter创建,并指定Color
init初始化
reloadData重载数据
dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
setAllowsSelection是否开启cell选择
setAllowsMultipleSelection是否可以多选cell
setSelectRowAtIndexPath通过索引选择一行
setUnSelectRowAtIndexPath通过索引取消选择一行
setShowsScrollIndicators设置显示滚动指示器
cellForRowAtIndexPath根据索引获取显示的cell
displayingCollectionCell显示CollectionCell
getHighlightCollectionCell获取高亮显示的collectioncell
switchPCMode开关PC模式


我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码:

FirstViewController.h内容:

  1. #ifndef __HelloCpp__ViewController__
  2. #define __HelloCpp__ViewController__
  3. #include <iostream>
  4. #include "CrossApp.h"
  5. USING_NS_CC;
  6. class FirstViewController : public CAViewController, CAAutoCollectionViewDataSource, CAAutoCollectionViewDelegate
  7. {
  8. protected:
  9. void viewDidLoad();
  10. void viewDidUnload();
  11. public:
  12. FirstViewController();
  13. virtual ~FirstViewController();
  14. //选中
  15. virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);
  16. //取消选中
  17. virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);
  18. //获取指定cell
  19. virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item);
  20. //项目大小
  21. virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item);
  22. //每个Section中Item的个数
  23. virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section);
  24. //section的个数
  25. virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView);
  26. private:
  27. DSize size;
  28. CAAutoCollectionView* p_AutoCollection;
  29. std::vector<CAColor4B> colorArr;
  30. };
  31. #endif /* defined(__HelloCpp__ViewController__) */


FirstViewController.cpp内容:

  1. #include "FirstViewController.h"
  2. FirstViewController::FirstViewController()
  3. {
  4. }
  5. FirstViewController::~FirstViewController()
  6. {
  7. }
  8. void FirstViewController::viewDidLoad()
  9. {
  10. //获得屏幕大小
  11. size = this->getView()->getBounds().size;
  12. //随机出颜色
  13. for (int i = 0; i < 40; i++)
  14. {
  15. char r = CCRANDOM_0_1() * 255;
  16. char g = CCRANDOM_0_1() * 255;
  17. char b = CCRANDOM_0_1() * 255;
  18. //将随机的ccc4对象放入到容器里
  19. colorArr.push_back(ccc4(r, g, b, 255));
  20. }
  21. //生成CACollectionView
  22. p_AutoCollection = CAAutoCollectionView::createWithFrame(this->getView()->getBounds());
  23. DRect rect = this->getView()->getBounds();
  24. CCLog("MaxX = %f", rect.getMaxX());
  25. CCLog("MaxX = %f", rect.getMaxY());
  26. //开启选中
  27. p_AutoCollection->setAllowsSelection(true);
  28. //开启多选
  29. p_AutoCollection->setAllowsMultipleSelection(true);
  30. //绑定交互代理
  31. p_AutoCollection->setCollectionViewDelegate(this);
  32. //绑定数据代理
  33. p_AutoCollection->setCollectionViewDataSource(this);
  34. //item水平间的距离
  35. p_AutoCollection->setHoriMargins(40);
  36. p_AutoCollection->setHoriCellInterval(40);
  37. //p_AutoCollection->setCollectionHeaderHeight(40);
  38. //itme竖直间的距离
  39. p_AutoCollection->setVertMargins(40);
  40. p_AutoCollection->setVertCellInterval(40);
  41. //p_AutoCollection->setCollectionFooterHeight(40);
  42. //添加到屏幕渲染
  43. this->getView()->addSubview(p_AutoCollection);
  44. }
  45. void FirstViewController::viewDidUnload()
  46. {
  47. // Release any retained subviews of the main view.
  48. // e.g. self.myOutlet = nil;
  49. }
  50. //选中
  51. void FirstViewController::collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item)
  52. {
  53. //选中
  54. CCLog("选中");
  55. }
  56. //取消选中
  57. void FirstViewController::collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item)
  58. {
  59. //取消选中
  60. CCLog("取消选中");
  61. }
  62. //获取指定cell
  63. CACollectionViewCell* FirstViewController::collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item)
  64. {
  65. //根据标识获得CACollectionViewCell
  66. CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");
  67. //如果没有找到相应的CACollectionViewCell则新建一个
  68. if (p_Cell == NULL)
  69. {
  70. p_Cell = CACollectionViewCell::create("CrossApp");
  71. //生成Item背景
  72. CAView* itemImage = CAView::createWithFrame(DRect(0, 0, cellSize.width, cellSize.height));
  73. itemImage->setTag(99);
  74. p_Cell->addSubview(itemImage);
  75. DSize itemSize = itemImage->getBounds().size;
  76. //生成itemCALabel
  77. CALabel* itemText = CALabel::createWithCenter(DRect(itemSize.width*0.5, itemSize.height*0.5, 150, 40));
  78. itemText->setTag(100);
  79. itemText->setFontSize(29);
  80. itemText->setTextAlignment(CATextAlignmentCenter);
  81. itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
  82. itemImage->addSubview(itemText);
  83. }
  84. //设置Item背景颜色
  85. CAView* itemImageView = p_Cell->getSubviewByTag(99);
  86. itemImageView->setColor(colorArr.at(item));
  87. CCLog("row = %d", item);
  88. //设置itme文本显示
  89. char pos[20] = "";
  90. sprintf(pos, "(%d,%d)", section, item);
  91. CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);
  92. itemText->setText(pos);
  93. return p_Cell;
  94. }
  95. //项目大小
  96. DSize FirstViewController::collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item)
  97. {
  98. DSize size;
  99. size.width = (this->getView()->getBounds().size.width - 40 * 4) / 3;
  100. size.height = (this->getView()->getBounds().size.width - 40 * 4) / 3;
  101. return size;
  102. }
  103. //每个Section中Item的个数
  104. unsigned int FirstViewController::numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section)
  105. {
  106. return 15;
  107. }
  108. //section的个数
  109. unsigned int FirstViewController::numberOfSections(CAAutoCollectionView *collectionView)
  110. {
  111. return 10;
  112. }

CAAutoCollectionView 属性说明

CollectionViewDataSource

类型:CAAutoCollectionViewDataSource*

解释:添加数据代理,set/get{}。


CollectionViewDelegate

类型:CAAutoCollectionViewDelegate*

解释:添加交互代理,set/get{}。


CollectionHeaderView

类型:CAView*

解释:添加头部视图,set/get{}。


CollectionFooterView

类型:CAView*

解释:添加尾部视图,set/get{}。


CollectionHeaderHeight

类型:unsigned int

解释:设置头部的高度,set/get{}。


CollectionFooterHeight

类型:unsigned int

解释:设置尾部的高度,set/get{}。


CollectionViewOrientation

类型:CACollectionViewOrientation

解释:CollectionView方向取向,set/get{}。


CollectionViewCellHoriAlign

类型:CACollectionViewCellHoriAlign

解释:CollectionView的Cell水平对齐,set/get{}。


CollectionViewCellVertAlign

类型:CACollectionViewCellVertAlign

解释:CollectionView的Cell垂直对齐,set/get{}。


HoriCellInterval

类型:unsigned int

解释:cell水平间隔,set/get{}。


VertCellInterval

类型:unsigned int

解释:cell垂直间隔,set/get{}。


HoriMargins

类型:unsigned int

解释:水平边距,set/get{}。


VertMargins

类型:unsigned int

解释:垂直边距,set/get{}。


AllowsSelection

类型:bool

解释:允许选择,is{}。


AllowsMultipleSelection

类型:bool

解释:允许多个选择,is{}。


AlwaysTopSectionHeader

类型:bool

解释:总是顶部的标题,is/set{}。


AlwaysBottomSectionFooter

类型:bool

解释:总是底部的节尾,is/set{}。


CAAutoCollectionView 方法说明

static CAAutoCollectionView* createWithFrame(const DRect& rect);

返回值:CAAutoCollectionView* 

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame


static CAAutoCollectionView* createWithCenter(const DRect& rect);

返回值:CAAutoCollectionView* 

参数:

类型参数名说明
const DRect& rect中心点的位置及大小

解释:创建,并指定Color


virtual bool init();

返回值:bool

参数:

解释:初始化


void reloadData();

返回值:void

参数:

解释:重载数据


CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

返回值:CACollectionViewCell*

参数:

类型参数名说明
const char* reuseIdentifier重载标识符

解释:从复用队列中寻找指定标识符的cell


virtual void setAllowsSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否开启cell选择


virtual void setAllowsMultipleSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否可以多选cell


void setSelectRowAtIndexPath(unsigned int section, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned int sectionsection
unsigned intitem项目数量

解释:通过索引选择一行


void setUnSelectRowAtIndexPath(unsigned int section, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned int sectionsection
unsigned intitem项目数量

解释:通过索引取消选择一行


virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:设置显示滚动指示器


CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

返回值:CACollectionViewCell* 

参数:

类型参数名说明
unsigned int sectionsection
unsigned introw
unsigned intitem项目数量

解释:根据索引获取显示的cell


const CAVector<CACollectionViewCell*>& displayingCollectionCell();

返回值:CAVector<CACollectionViewCell*>& 

参数:

解释:显示CollectionCell


CACollectionViewCell* getHighlightCollectionCell();

返回值:CACollectionViewCell*

参数:

解释:获取高亮显示的collectioncell


virtual void switchPCMode(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:开关PC模式

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号