Базовое управление состоянием графики - PullRequest
0 голосов
/ 27 октября 2010

В некотором фрагменте кода

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
  CGContextSetFillColorWithColor(ctx, [[UIColor darkTextColor] CGColor]);

  UIGraphicsPushContext(ctx);
  ...

устанавливается текущий цвет заливки, затем состояние помещается в стек. Другой фрагмент:

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
  UIGraphicsPushContext(ctx);

  [[UIColor darkTextColor] set];
  ...

Какой путь правильный? В чем разница между этими двумя методами CGContextSetFillColorWithColor и UIColor set с точки зрения государственного управления?

1 Ответ

1 голос
/ 27 октября 2010

Единственное отличие состоит в том, что когда вы используете метод UIColor, вы не можете указать, какой контекст обновлять, он всегда обновляет текущий контекст. UIGraphicsPushContext устанавливает новый контекст в качестве текущего, поэтому, конечно, порядок важен. (еще одно небольшое отличие состоит в том, что метод set устанавливает цвета заливки и обводки).

В противном случае нет никакой разницы, вы можете использовать то, что вам нравится.

В вашем примере я бы, вероятно, использовал CGContextSetFillColorWithColor, поскольку в этом случае вам не нужно использовать метод UIGraphicsPushContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...