Рисование UIImage CATiledLayer или CALayer не работает - PullRequest
0 голосов
/ 23 июля 2010

Добрый день всем;

Я пытаюсь вручную (не используя подслои) рисовать изображения внутри CATiledLayer, но он не ведет себя так, как должно с определенным решением.Я беру на себя обязательство, что когда вы вызываете 'CGContextDrawImage', вы должны масштабировать и переводить, чтобы перевернуть его, но я не могу всю жизнь, заставить его работать.

, который вызывается несколько раз из with в

 - (void)drawInContext:(CGContextRef)context

для рендеринга всех изображений, которые идут в CATileLayer.

Следующие изображения не отображаются:

- (void)drawInContext:(CGContextRef)context Image:(UIImage *)image  {
    CGRect rect = CGRectMake(x, y, image.size.width, image.size.height);
    CGContextSaveGState(context);

    CGContextTranslateCTM(context, 0, image.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, rect, image.CGImage);

    CGContextRestoreGState(context); 

Следующее создает изображение, но отображается неправильно:

- (void)drawInContext:(CGContextRef)context Image:(UIImage *)image  {
     CGRect rect = CGRectMake(x, y, image.size.width, image.size.height);
     CGContextDrawImage(context, rect, image.CGImage);

Аналогично этому:

- (void)drawInContext:(CGContextRef)context Image:(UIImage *)image {
    CGRect rect = CGRectMake(x, y, image.size.width, image.size.height);

    CGContextTranslateCTM(context, 0, image.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, rect, image.CGImage);

Я также пробовал:

UIGraphicsBeginImageContext
UIGraphicsEndImageContext

и

UIGraphicsPushContext
UIGraphicsPopContext

Все не работают.Я здесь упускаю что-то фундаментальное и подозреваю, что мой подход к спасению контекстов не работает.

1 Ответ

0 голосов
/ 02 августа 2010

ОК, думаю, я знаю, что здесь происходит;

Похоже, что изображение на самом деле рендерится, но рендерит за пределы экрана. Переворот происходит не относительно начала слоя, а из-за происхождения суперслоя.

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

...