Swift.CoreGraphics, addRects и fillPath заполняют только 1 прямоугольник - PullRequest
0 голосов
/ 10 апреля 2019

Итак, я следую учебнику, который находится в Objective-C, и я делаю то же самое, используя Swift.

Мой код заполняет только 1 прямоугольник, и я ожидаю, что он заполнит 3.

let context = UIGraphicsGetCurrentContext()
let rects = [CGRect(x: 100, y: 100, width: 100, height: 100),
             CGRect(x: 300, y: 300, width: 100, height: 100),
             CGRect(x: 500, y: 500, width: 100, height: 100)]

context?.setFillColor(UIColor.red.cgColor)
context?.addRects(rects)
context?.fillPath()

Код учебника (objc), который работает:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor red].CGColor);
CGContextAddRect(context, CGRectMake(100, 100, 100, 100);
CGContextAddRect(context, CGRectMake(200, 200, 100, 100);
CGContextAddRect(context, CGRectMake(300, 300, 100, 100);
CGContextFillPath(context)

Есть ли что-то, что я пропускаю? А также, я могу позвонить context?.addRects(rects) или context!.addRects(rects), и они оба работают, какую мне использовать?

P.S. Вот мой print(context?.path)

  moveto (100, 100)
    lineto (200, 100)
    lineto (200, 200)
    lineto (100, 200)
    closepath
  moveto (300, 300)
    lineto (400, 300)
    lineto (400, 400)
    lineto (300, 400)
    closepath
  moveto (500, 500)
    lineto (600, 500)
    lineto (600, 600)
    lineto (500, 600)
    closepath
...