实现iOS s弯列表的思路解析

2022-11-03  本文已影响0人  大牛大神
实现效果

思路  

1,利用scrollerView上下滑动的特效 当做背景view

2,用过对数组内每个站点的计算  使奇数行(1行3行5行)的view的x和y是从左往右

3,使偶数行的五个站点  第一个的x加5的距离,第二个加4的距离,这样,偶数行的view是从右往左排列

4,使每五个view的y比上五个view的y加一倍距离

6,for循环把计算好x和y的view添加到scrollerView上

7,连线 最后连线按照view的顺序连线就行了。

代码↓

funcgetStationPoint(_stationCount:Int)->[CGPoint]

    {

        varlist = [CGPoint]()

        //var k = 1

        letpt =CGPoint(x:colWidth,y:colWidth)

        letstationNum = stationCount

        varp:CGPoint= pt

        letr = stationNum /5

        foriin0..< r

        {

            if i%2 == 0 // odd row  2 4  6  8

            {

                for  jin0..<5

                {

                    p.x= pt.x+CGFloat(j *colWidth)

                    p.y= pt.y+CGFloat(i *rowHeight)

                    list.append(p)

                }

            }

            else //even row  1 3 5 7  9

            {

                forjin0..<5

                {

                    p.x=CGFloat(5*colWidth) -CGFloat(j*colWidth)

                    p.y= pt.y+CGFloat(i *rowHeight)

                    list.append(p)

                }

            }

        }

        //last row

        forjin0..< stationNum-r*5

        {

            ifr%2==0// odd row

            {

                p.x= pt.x+CGFloat(j *colWidth)

                p.y= pt.y+CGFloat(r *rowHeight)

                list.append(p)

            }

            else

            {

                p.x=KScreenWidth- pt.x-CGFloat(j *colWidth)

                p.y= pt.y+CGFloat(r *rowHeight)

                list.append(p)

            }

        }

        scrollBottom = p.y + CGFloat(rowHeight)

        scrollerView.contentSize = CGSize(width: KScreenWidth ,height: p.y + CGFloat(colWidth)*2)

        block?(p.y+CGFloat(colWidth)*2)

        returnlist

    }

上一篇 下一篇

猜你喜欢

热点阅读