2015-07-21 2 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

спасибо. Я понял, что мой код не создает идеальную сетку и не исправил ее, но не знал, что это оптическая иллюзия! –

Смежные вопросы