Я пытаюсь создать шаблон изображения вдоль линии. В конце концов, я хотел бы превратить это в текстуру карандаша для приложения для рисования, но сейчас я просто тестирую шаблон вдоль простой строки. Когда я запускаю его, у меня получается сплошная черная линия, и консоль печатает это сообщение:Swift - Ошибка: CGContextSetStrokePattern: шаблон, заданный с нетравным цветовым пространством
Ошибка: CGContextSetStrokePattern: шаблон, заданный с нетравным цветовым пространством.
func drawStroke(view: UIView, context: CGContext?) {
let lineWidth: CGFloat = 5.0
let callbacks:CGPatternCallbacks = CGPatternCallbacks(
version: 0,
drawPattern: { (pointer, context) -> Void in
//let PENCIL = UIColor(patternImage: UIImage(named: "Pencil_Texture.png")!)
CGContextSetFillColorWithColor(context, patternImage.CGColor)
CGContextAddArc(context, 3, 3, 4, 0, radians(360), 0)
CGContextFillPath(context)
},releaseInfo: nil)
CGContextSaveGState(context)
let space = CGColorSpaceCreateDeviceRGB()
let patternSpace:CGColorSpaceRef = CGColorSpaceCreatePattern(space)!
CGContextSetFillColorSpace(context, patternSpace)
let pattern:CGPatternRef = CGPatternCreate(nil, view.frame, CGAffineTransformIdentity, 24, 24, .ConstantSpacing, true,[ callbacks ])!
let alpha:CGFloat = 1.0
//line
CGContextSetLineWidth(context, lineWidth)
CGContextSetLineCap(context, .Round)
//points
CGContextMoveToPoint(context, view.center.x, view.center.y)
CGContextAddQuadCurveToPoint(context, view.center.x, view.center.y, view.center.x, view.center.y + 200)
// Draw the stroke
CGContextSetStrokePattern(context, pattern, [alpha])
CGContextStrokePath(context)
CGContextRestoreGState(context)
}
Я просмотрел документацию Apple, но это не очень помогает. Я видел некоторые учебники в Objective-C, но я думаю, что некоторые методы Obj-C не существуют в Swift.