2010-07-23 4 views
0

Добрый день;CATiledLayer или CALayer рисунок UIImage не работает

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

У меня есть метод, называемый

- (void)drawInContext:(CGContextRef)context Image:(UIImage *)image 

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

- (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 

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

ответ

0

OK Я думаю, что знаю, что здесь происходит;

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

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

Смежные вопросы