cocoStudio:ScrollView控件使用记录(2)
来源:互联网 发布:mysql函数大全 编辑:程序博客网 时间:2024/04/30 02:19
cocoStudio:ScrollView控件使用记录(2)
在上一篇文章中已经分析了使用ScrollView的一些问题,那么这一篇提供一些解决方案:
1、
默认情况下scrollView的滚动区域大小和scrollView的大小(可视区域)相同,
我们可以通过getInnerContainerSize方法获取滚动区域大小,然后把我们的子控件
从上往下加即第一个控件坐标getInnerContainerSize.height,
第二个控件位置为getInnerContainerSize.height
减去一个值,下面的控件坐标就依次往下递减,这里只考虑Y轴方向,然后根据所添加的所有控件
计算出一个高度,然后通过setInnerContainerSize函数,设置ScrollView滚动区域的大小,如果添加的控件
高度大于最初的滚动区域高度,就不行,如果不大于,就可以。
针对大于按照上面方法不行的这种情况,我们可以根据添加的控件高度和原始滚动区域高度计算一个偏移量Offset,
然后把我们添加到scrollView中所有的子控件Y方向坐标加上这个偏移。然后使用setInnerContainerSize
方法把scrollView的大小设置为我们实际添加的所有子控件高度。
注:我们这里假设scrollView的滚动区域大小和scrollView的大小(可视区域)相同,在使用过程中我就遇到
因为这个导致显示位置不正确的情况,因为我的scrollView中的内容需要根据级别显示不同的内容,开始时
我只是把scrollView中的子控件都移除了,但是并没有改变InnerContainerSize即滚动区域大小,所以
再次添加新的内容时,scrollView滚动区域大小仍然是上一次我们设置的大小,这样就会导致计算偏移量不对,
所以我们要在重新添加新的内容之前,把滚动区域大小设置为可视区域大小。
local scrollViewSize = scrollView:getContentSize()
scrollView:setInnerContainerSize(scrollViewSize)
2、
我们可以在添加scrollView内容之前,先根据添加内容的个数,每个Item的大小,还有间距,
计算出scrollView的滚动区域大小,然后在使用上面的方法进行添加,这种比较适合那种每个
item高度相同并且确定的情况,如邮件中的每封邮件,其实这里的scrollView是当成了listview
使用。
注:使用这种方式有一点需要注意,就是如果内容的高度小于scrollView的大小,这里即使设置
滚动区域大小也是没有意义,因为可视区域大小最小等于scrollView大小,
这里也是默认scrollView的滚动区域和scrollView的大小相同,这种情况计算每个Item的位置时,
最好使用scrollView的滚动区域大小为基准。
3、
我们可以在cocoStudio中把scrollView的滚动区域大小设置为一个很大的值,也就是根本达不到的
值,然后根据1的方法计算一个偏移量,这里偏移量的计算方式不同,不过思路相同。
4、
采用倒序添加的方式,如邮件系统,先把最后一封邮件添加在0的位置,我们只考虑Y轴方向,
然后倒数第二封邮件添加到最后一封邮件的上面,依次类推,添加完成后,在根据内容设置滚动
区域大小。
注:这里也有一个问题,就是如果内容的高度小于scrollView的高度,那么就会出现
邮件靠近底部显示,而不是靠近顶部显示,也是要计算一个偏移量。
总结:
其实上面提供的所有方法都是因为scrollView内部的滚动层的锚点是0,0,而且滚动层内容必须
靠顶部显示,而且只有在0之上的内容才可以看到,而且上面提供的方案都只是针对上下
滚动的情况,没有考虑横向滚动。
在上一篇文章中已经分析了使用ScrollView的一些问题,那么这一篇提供一些解决方案:
1、
默认情况下scrollView的滚动区域大小和scrollView的大小(可视区域)相同,
我们可以通过getInnerContainerSize方法获取滚动区域大小,然后把我们的子控件
从上往下加即第一个控件坐标getInnerContainerSize.height,
第二个控件位置为getInnerContainerSize.height
减去一个值,下面的控件坐标就依次往下递减,这里只考虑Y轴方向,然后根据所添加的所有控件
计算出一个高度,然后通过setInnerContainerSize函数,设置ScrollView滚动区域的大小,如果添加的控件
高度大于最初的滚动区域高度,就不行,如果不大于,就可以。
针对大于按照上面方法不行的这种情况,我们可以根据添加的控件高度和原始滚动区域高度计算一个偏移量Offset,
然后把我们添加到scrollView中所有的子控件Y方向坐标加上这个偏移。然后使用setInnerContainerSize
方法把scrollView的大小设置为我们实际添加的所有子控件高度。
注:我们这里假设scrollView的滚动区域大小和scrollView的大小(可视区域)相同,在使用过程中我就遇到
因为这个导致显示位置不正确的情况,因为我的scrollView中的内容需要根据级别显示不同的内容,开始时
我只是把scrollView中的子控件都移除了,但是并没有改变InnerContainerSize即滚动区域大小,所以
再次添加新的内容时,scrollView滚动区域大小仍然是上一次我们设置的大小,这样就会导致计算偏移量不对,
所以我们要在重新添加新的内容之前,把滚动区域大小设置为可视区域大小。
local scrollViewSize = scrollView:getContentSize()
scrollView:setInnerContainerSize(scrollViewSize)
2、
我们可以在添加scrollView内容之前,先根据添加内容的个数,每个Item的大小,还有间距,
计算出scrollView的滚动区域大小,然后在使用上面的方法进行添加,这种比较适合那种每个
item高度相同并且确定的情况,如邮件中的每封邮件,其实这里的scrollView是当成了listview
使用。
注:使用这种方式有一点需要注意,就是如果内容的高度小于scrollView的大小,这里即使设置
滚动区域大小也是没有意义,因为可视区域大小最小等于scrollView大小,
这里也是默认scrollView的滚动区域和scrollView的大小相同,这种情况计算每个Item的位置时,
最好使用scrollView的滚动区域大小为基准。
3、
我们可以在cocoStudio中把scrollView的滚动区域大小设置为一个很大的值,也就是根本达不到的
值,然后根据1的方法计算一个偏移量,这里偏移量的计算方式不同,不过思路相同。
4、
采用倒序添加的方式,如邮件系统,先把最后一封邮件添加在0的位置,我们只考虑Y轴方向,
然后倒数第二封邮件添加到最后一封邮件的上面,依次类推,添加完成后,在根据内容设置滚动
区域大小。
注:这里也有一个问题,就是如果内容的高度小于scrollView的高度,那么就会出现
邮件靠近底部显示,而不是靠近顶部显示,也是要计算一个偏移量。
总结:
其实上面提供的所有方法都是因为scrollView内部的滚动层的锚点是0,0,而且滚动层内容必须
靠顶部显示,而且只有在0之上的内容才可以看到,而且上面提供的方案都只是针对上下
滚动的情况,没有考虑横向滚动。
1 0
- cocoStudio:ScrollView控件使用记录(2)
- cocoStudio:ScrollView控件使用记录
- cocostudio Scrollview的使用
- 关于cocostudio的ScrollView使用
- cocostudio 问题记录2
- Cocostudio控件
- cocos2d-x随记-粗略使用cocostudio制作scrollview
- Cocostudio(1) 容器层的使用- ScrollView ListView PageView
- cocostudio中的一些控件的使用
- cocostudio scrollview裁切bug
- android ScrollView控件使用
- IOS ScrollView滚动控件使用
- Cocos2d-JS项目之二:cocostudio基础控件的使用
- cocostudio 问题记录
- Cocostudio常用控件
- CocoStudio中的一些控件
- cocos2dx & cocostudio 控件构想
- cocostudio之类似于服务器选择功能的实现ScrollView+Slider组件结合使用
- Android学习笔记——从SD卡中读取一张图片得到图片的路径和名称
- jquery zclip复制页面的链接或者文本内容
- hihocoder#1066 : 无间道之并查集
- eclipse-pydev重启之后出现Unresolved import错误提示的解决偏方
- jquery UI dataTable
- cocoStudio:ScrollView控件使用记录(2)
- <c:forEach>标签与el表达式联合的使用
- php解决中文乱码
- Hadoop之——Hadoop2.2.0分布式集群安装
- HashMap怎样判断值是否重复
- TCPdump抓包工具命令
- systemtap获取对结构体字段的修改值
- iOS打包相关
- 【我就看看不说话】 svn