前端之家收集整理的这篇文章主要介绍了
cocoStudio:ScrollView控件使用记录(2),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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之上的内容才可以看到,而且上面提供的方案都只是针对上下 滚动的情况,没有考虑横向滚动。 原文链接:https://www.f2er.com/cocos2dx/343010.html