弹窗多内容,灵活布局计算方式总结

之前的礼物弹窗内容个数少,因此老代码的frame只能针对两页,判断条件也是常量,因此无法灵活增加,不支持更多页的扩展。
最近的需求是扩充礼物数量,在修改时发现了当时的问题,意识到这种可能灵活变更的内容未来会有更多调整。
所以这次直接将所有常量变更为表达式方式,做成支持N多页面的灵活布局方式。
 
问题本不复杂,在计算时发现里该类问题的计算思路是通用的,因此记录一下。
举例:
当前弹窗为,容器大小固定,单页内容:2行 4列 支持2页
计划修改为:scrollView作为容器,容器大小灵活,行列数量灵活,支持页数灵活
布局顺序为:
0    1    2    3    8      9      10    11
4    5    6    7    12    13    14    
 
 
对某一个礼物来说,size固定,需要调整只有origin。因此如何计算X、Y值是关键。
 
举例两页,序号分别为:
0    1    2    3    8    9    10    11
4    5    6    7    12
 
首先分析X的计算:
与行状态无关,与列数有关,与间距有关,与页数有关
 
间距为固定值,无需多余考虑
要去消减行数的影响,保留列数
对列数取余
0    1    2    3    0    1    2    3
0    1    2    3    0    
现在还无法表现页数对X的影响,需要再加一个页数的值
 
首页X的计算为:ScreenWidth *(i/onePageAmount) + widthSpace + i%_column * ButtonWidth;
 
首先分析Y的计算:
与行状态有关,与列数无关,与间距无关,与页面无关
除以列数
0    0    0    0    2    2    2    2
1    1    1    1    3
消减页数的影响,取余行数
0    0    0    0    0    0    0    0
1    1    1    1    1
 
首页Y的计算为:i/_column % _row * ButtonHeight
 
posted @ 2019-07-30 16:28  怀达  阅读(236)  评论(0编辑  收藏  举报