drawInRect не сохраняющее преобразование - PullRequest
0 голосов
/ 14 ноября 2010
    UIGraphicsBeginImageContext(backgroundImageView.frame.size);

    UIImageView *image1 = backgroundImageView;
    UIImageView *image2 = boat;

    // Draw image1  
    [image1.image drawInRect:CGRectMake(0, 0, image1.image.size.width, image1.image.size.height)];  

    // Draw image2  
    [image2.image drawInRect:CGRectMake(boat.center.x, boat.center.y, boat.image.size.width, boat.image.size.height)];  


    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

Когда отображается resultImage, значение угла преобразования для image2 не сохраняется после того, как я установил его равным значению UIImageView. Я думал, что когда я установлю изображение2 = лодка, значение преобразования лодки будет перенесено на изображение2.

Я подозреваю, что это связано с тем, что я работаю с UIImageView вместо UIVIew. Я пробовал много разных вещей, но не смог решить эту проблему.

Любая помощь будет оценена.

Спасибо.

1 Ответ

3 голосов
/ 14 ноября 2010

Когда вы рисуете изображение в графическом контексте, оно использует матрицу преобразования контекста , которая отличается от любого преобразования, примененного к представлению. Таким образом, преобразование image2 (предположительно UIImageView) совершенно не имеет отношения к прямому рисованию изображения.

Вы можете либо указать новое преобразование с различными функциями CGContext и CGAffineTransform в Quartz, либо напрямую применить копию преобразования UIImageView, например, так:

CGContextConcatCTM(UIGraphicsGetCurrentContext(), someView.transform);
[someView.image drawInRect: CGRectMake(...)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...