Можно ли привязать цвет фона CGPattern-изображения к центру CALayer? - PullRequest
0 голосов
/ 01 января 2012

Я настроил слой следующим образом:

CALayer *layer = [CALayer layer];
layer = /* create a CGColorRef with a pattern image */;

Этот слой просто отображается в моем окне.Мои функции рисования / отпускания для шаблона следующие:

void drawPattern(void *info, CGContextRef c) {
    CGContextDrawImage(c, CGRectMake(0, 0, CGImageGetWidth(info), CGImageGetHeight(info)), info);
}
void releaseInfo(void *info) {
    CGImageRelease((CGImageRef)info);
}

По умолчанию шаблон привязывается к левому нижнему углу окна, поэтому при изменении размера окна эта точка фиксируется.

Я понял, что могу закрепить его в левом верхнем углу двумя шагами:

  • установить layer.geometryFlipped = YES;
  • использовать CGAffineTransformMakeScale(1, -1) в качестве аргументана CGPatternCreate вместо CGAffineTransformIdentity.

Но как я могу закрепить его в центре?(Изменение anchorPoint слоя, похоже, ничего не делает.)

1 Ответ

1 голос
/ 01 января 2012

Я думаю, вам придется передать слой, а не изображение, как параметр info, и ваша функция рисования извлекает значение frame слоя и использует его для вычисления применяемого перевода.

...