2014-12-15 2 views
1

Я попытался назвать CGPathMoveToPoint() в Swift с помощью CGMutablePathRef и CGPoint в качестве входных данных и NULL/ноль вместо CGAffineTransformation как этоне может вызвать CGPathMoveToPoint() с нуля в Swift

CGPathMoveToPoint(path, nil, point.x as CGFloat, point.y as CGFloat) 

Однако, Я всегда получаю сообщение об ошибке: выражение не может быть преобразовано в тип NilLiteralConvertible. Вы не знаете, почему этот код не работает? Что должно быть использовано в Swift, в котором был аргумент nil? Я попытался использовать CGAffineTransformidentity вместо nil, но он тоже не работает. Спасибо!

+0

Можете ли вы показать больше кода, в частности, где вы создаете «путь» и «точку»? Ваша одна строка работает для меня, если перед ней есть «var path = CGPathCreateMutable()» и «var point = CGPoint (x: 10, y: 20)». –

ответ

0

Я подозреваю, что ваш path - вы не показали, что это такое, так как мы знаем, что это действительно CGPath? Тем не менее, есть и это:

point.x as CGFloat 

То есть не Swift. Вы хотите сказать CGFloat(point.x) (и так далее для point.y), если это уже не CGFloat.

+0

переход на CGFloat (point.x) сделал трюк для меня. Я горжусь и смирен, что мне помог мой любимый автор. Благодаря! – user1612877

+0

Для меня большая честь и радость! Подумайте об этом так: 'as' - это просто способ сообщить компилятору, что уже есть. 'CGFloat()' фактически _makes_ значение CGFloat, которое вы хотите сделать. – matt

0

Код ниже компилируется ОК для меня. Обратите внимание, что он использует CGMutablePath, а не CGMutablePathRef.

var myMutablePath:CGMutablePath = CGPathCreateMutable() 
CGPathMoveToPoint(myMutablePath, nil, CGFloat(1.0), CGFloat(1.0)) 
1

Этот код заполняет красный прямоугольник в окне:

let context:CGContextRef = NSGraphicsContext.currentContext()!.CGContext 

var pathPoint:CGPoint = CGPoint() 
pathPoint.x = CGFloat(225.0) 
pathPoint.y = CGFloat(100.0) 

var myMutablePath:CGMutablePath = CGPathCreateMutable() 
CGPathMoveToPoint(myMutablePath, nil, pathPoint.x, pathPoint.y) 
CGPathAddLineToPoint(myMutablePath, nil, pathPoint.x + CGFloat(50.0), pathPoint.y) 
CGPathAddLineToPoint(myMutablePath, nil, pathPoint.x + CGFloat(50.0), pathPoint.y + CGFloat(50.0)) 
CGPathAddLineToPoint(myMutablePath, nil, pathPoint.x, pathPoint.y + CGFloat(50.0)) 
CGPathAddLineToPoint(myMutablePath, nil, pathPoint.x, pathPoint.y) 

CGContextAddPath(context, myMutablePath); 

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0) 
CGContextFillPath(context) 
0

Если это происходит с Swift3, просто проверить новый синтаксис. Сообщения об ошибках Xcode вводят в заблуждение, это не проблема только с нулем. Пример нового синтаксиса для вашего кода:

path.move(to: point) 
Смежные вопросы