关于tableview的旋转
来源:互联网 发布:手机抠图软件 编辑:程序博客网 时间:2024/06/05 22:52
前提:本文测试用的quick版本为2.2.1-rc
最近写一个接口,是关于过关条件的。因为条件是后台编辑,长度不固定,所以需要做成可滑动的。采取的措施是将编辑内容打散,分成若干个label,然后将其写入tableview中。由于某种原因,存放tableview的parentnode是旋转过的,如果直接将tableview放入,则导致tableview的UI和触摸范围不一致。表现为在指定位置可以接收到触摸事件,但是UI却不在此位置。
问题出现的原因是scrollview的裁剪出现问题,可以用setClippingToBounds(false)来进行测试。但是这样子的话scrollview就失去了原有的特性。解决方法有两种。1>修改scrollview的裁剪算法。因为同事做过这个功能,所以我直接借鉴他的代码。他是这样处理的,重写scrollview代码。首先判断是否旋转过,如果旋转过,则在befrodraw中转换一下宽度和高度。代码如下。
else { glEnable(GL_SCISSOR_TEST); if (!isHDeviceOrientation()) { CCSize winSize = CCDirector::sharedDirector()->getWinSize(); frame.origin.y = winSize.height-frame.origin.y; frame.origin.y = 0; CC_SWAP(frame.size.width, frame.size.height, float); } CCEGLView::sharedOpenGLView()->setScissorInPoints(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); }
同时修改getViewRect(),添加代码如下
if (isHDeviceOrientation()) return CCRectMake(screenPos.x, screenPos.y, m_tViewSize.width*scaleX, m_tViewSize.height*scaleY);
同事用其做了一个牌桌的过关提示,证明是可行的。但是这样有个劣势是,需要不断的调整scrollview的viewsize,position和contentoffset。需要不断尝试。2>修改旋转。tableview有两种方式,horizontal和vertical。设想一下因为父节点旋转,导致tableview的裁剪出问题,问题的原因可以在裁剪上,也可以在旋转上。如果父节点旋转,同时tableview也旋转,让其总旋转为360度,是否就相当于没有旋转,这样裁剪就不会出现问题了。事实证明这样是可行的。唯一需要注意的是tableview需要旋转270度,同时如果理想的滑动方式为垂直,现在需要改动为左右滑动。tableview没有旋转,要营造出旋转的效果,可以旋转tableviewcell内的节点。这样就可以了。
0 0
- 关于tableview的旋转
- 关于iOS TableView旋转后头部空白的问题
- 关于TableView的学习
- 关于tableView的separatoreLine隐藏
- ios关于tableView的重用
- 关于设置tableView的背景图片
- 关于tableview的一些bug
- 关于tableView的复用
- 关于tableView的性能优化
- 关于tableView的section悬浮
- 关于tableView:cellForRowAtIndexPath的解释
- 关于旋转的动画
- 关于Bitmap的旋转
- 关于视图的旋转
- 关于tableview的 [self.tableView registerClass: forCellReuseIdentifier:使用方法
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- 关于TableView中图片的延时加载
- 关于TCP最大连接数的问题
- EM算法
- 一个程序员的git
- GUI程序打包成exe--笔记
- sed简单实例练习
- 关于tableview的旋转
- 字串查找算法-KMP算法
- 十一月总结
- SGU 365 Ships of the Desert dp
- Vector——不定长数组
- 跳跃表(转)
- Mysql锁的问题(InnoDB)
- 感悟(1)——论如何在三年内做一个成功的自己
- jbpm4.4环境搭建和插件引入