Swift. CoreGraphics, addRects и FillPath заполняют только 1 прямоугольник

#ios #swift #core-graphics

#iOS #swift #ядро-графика

Вопрос:

Итак, я следую руководству, написанному на 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) , и они оба работают, какой из них мне следует использовать?

PS Вот мой 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
  

Комментарии:

1. У меня все работало нормально… вы уверены, что ваше представление больше, чем 300 x 300 ?

2. @DonMag Это не было больше.. теперь это работает, спасибо