思路
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
}
网友评论