Я пытаюсь создать собственный CGContext в UIView draw (_ :). Здесь:
override func draw(_ rect: CGRect) {
//let ctx = UIGraphicsGetCurrentContext()
let width = Int(rect.size.width)
let height = Int(rect.size.height)
let bytesPerPixel = 4
let bytesPerRow = bytesPerPixel * width
let data = UnsafeMutableRawPointer.allocate(byteCount: bytesPerRow * height/*727080*/, alignment: 8)
let colorSpace = CGColorSpaceCreateDeviceRGB()
guard let ctx = CGContext(data: data, width: width, height: height, bitsPerComponent: 8, bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedFirst.rawValue) else {
return
}
ctx.setStrokeColor(UIColor.orange.cgColor)
ctx.setLineWidth(3.0)
ctx.stroke(rect)
}
И представление не отображается на дисплее, тогда как использование текущего контекста работает естественным образом (отображает границы границ):
override func draw(_ rect: CGRect) {
guard let ctx = UIGraphicsGetCurrentContext() else {
return
}
ctx.setStrokeColor(UIColor.orange.cgColor)
ctx.setLineWidth(3.0)
ctx.stroke(rect)
}
Я следовал описанию в swift заголовочный файл для метода инициализации CGContext. По какой причине это будет работать иначе, чем захват текущего контекста, так как я, кажется, использую информацию растрового изображения, установленную из текущего представления.