Свести подвиды - PullRequest
       16

Свести подвиды

1 голос
/ 29 октября 2009

У меня есть графическое приложение, которое я пишу, которое имеет UIView, который имеет несколько UIImageViews в качестве подпредставлений, добавленных к нему со временем. Я хочу сгладить все эти подпредставления по соображениям производительности, так как они со временем замедляются. Какой самый простой способ «сплющить» эти слои.

1 Ответ

2 голосов
/ 29 октября 2009

Создать новый растровый контекст:

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CGContextRef newContext =
    CGBitmapContextCreate(
        NULL,
        viewContainingAllUIImageViews.frame.size.width,
        vViewContainingAllUIImageViews.frame.size.height,
        8,
        viewContainingAllUIImageViews.frame.size.width,
        colorspace,
        0);
CGColorSpaceRelease(colorspace);

Нарисуйте соответствующий фон в контексте:

CGContextSetRGBFillColor(newContext, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(newContext, CGRectMake(0, 0, viewContainingAllUIImageViews.frame.size.width, vViewContainingAllUIImageViews.frame.size.height));

Получите свойство CGImage каждого изображения, которое содержит ваш UIImageView, и нарисуйте все изображения в это одно изображение:

CGContextDrawImage(newContext, oneOfTheSubImageViews.frame, oneOfTheSubImageViews.image.CGImage);

Преобразование растрового контекста обратно в изображение:

CGImageRef newImage = CGBitmapContextCreateImage(newContext);
UIImage *flattenedImage = [UIImage imageWithCGImage:newImage];

Затем CFRelease newContext, newImage, используйте UIImage в UIImageView и отбросьте все остальные UIImageView с.

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