cocoStudio:ScrollView控件使用记录(2)

本文提供了几种使用cocoStudio中ScrollView控件的有效方法,包括如何调整滚动区域大小以适应不同数量的内容项,解决内容显示位置不正确的问题,并讨论了适用于不同场景的具体策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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之上的内容才可以看到,而且上面提供的方案都只是针对上下
滚动的情况,没有考虑横向滚动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值