Как я могу визуализировать представление ландшафта UIViewController в памяти? - PullRequest
2 голосов
/ 11 апреля 2010

Я пытаюсь визуализировать представление UIViewController в памяти (но не в иерархии) в буфере изображений в памяти, чтобы я мог сделать некоторые интересные переходные анимации. Однако, когда я рендерим представление UIViewController в этот буфер, он всегда рендерится так, как будто контроллер находится в книжной ориентации, независимо от ориентации остальной части приложения. Как мне включить этот контроллер в?

Мой код в RootViewController выглядит следующим образом:

MyUIViewController* controller = [[MyUIViewController alloc] init];
int width = self.view.frame.size.width;
int height = self.view.frame.size.height;
int bitmapBytesPerRow = width * 4;

unsigned char *offscreenData = calloc(bitmapBytesPerRow * height, sizeof(unsigned char)); 

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef offscreenContext = CGBitmapContextCreate(offscreenData, width, height, 8, bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast); 
CGContextTranslateCTM(offscreenContext, 0.0f, height);
CGContextScaleCTM(offscreenContext, 1.0f, -1.0f);

[(CALayer*)[controller.view layer] renderInContext:offscreenContext];

В этот момент содержимое буферов внеэкранной памяти является портретно-ориентированным, даже когда окно находится в альбомной ориентации.

Идеи

1 Ответ

1 голос
/ 11 апреля 2010

Как MyUIViewController раскладывает подпредставления своего вида для альбомной ориентации?

Если вы зависите только от автоматического изменения размера масок, вы можете просто установить controller.view.bounds = CGRectMake(480,300) (или соответствующий прямоугольник для iPad) перед рендерингом, если ориентация интерфейса горизонтальная.

Если есть дополнительный код макета (например, в -[MyUIViewController willAnimateRotationToInterfaceOrientation:duration:]), то вам необходимо убедиться, что он вызывается перед рендерингом.

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