2015-07-21 78 views
2

长故事简介我想在CALayerShape上绘制对角网格。我的代码而不是直线产生某种弯曲的疯狂。它看起来非常有趣,我希望它会是想要的效果,但不,它不是。使用CAShapeLayer绘图网格

我的问题: 1.如何使用CAShapeLayer绘制直线? 2.我在模拟器中发现了一些影响像素重心的黑洞吗?

func drawPath(_view:UIView, phase:CGFloat, segment:CGFloat){ 
     // we need two runs 
     var height = CGRectGetHeight(view.frame) 
     let width = CGRectGetWidth(view.frame) 

     let segment:CGFloat = 40 
     var currentX:CGFloat = segment 
     var cgpath = CGPathCreateMutable() 

     for var y = height; y > 0 ; y = y - segment { 


      CGPathMoveToPoint(cgpath, nil, 0, y) 
      CGPathAddLineToPoint(cgpath, nil, currentX, 0) 
      CGPathCloseSubpath(cgpath) 

      currentX += segment 
     } 

     var layer = CAShapeLayer() 
     layer.path = cgpath 
     layer.strokeColor = UIColor.redColor().CGColor 
     layer.lineWidth = 1 
     layer.fillColor = UIColor.blackColor().CGColor 

     view.layer.addSublayer(layer) 


    } 

distorted grid

回答

3

你画什么是真正的直线。它看起来弯曲的事实是一种错觉。你可以用纱线和一块纸板获得同样的效果。

您的代码做错了事。

您需要使用方格纸绘制出想要的对角线网格,找出对角线网格的端点,然后提出一个循环,为您提供这些端点。

如果你想在5x5的矩形画出对角线网格你会画线,像这样:

0,1 to 1,0 
0,2 to 2,0 
0,3 to 3,0 
0,4 to 4,0 

你的发车间隔大概更像每20个或30点,你的整个电网可能是屏幕的全尺寸,但你明白了。

+0

谢谢。我意识到我的代码并没有渲染完美的网格,并且修复了它,但却不知道这是光学错觉! –