gpt4 book ai didi

iphone - 如何渲染内存中 UIViewController 的 View 景观?

转载 作者:行者123 更新时间:2023-12-03 21:23:39 27 4
gpt4 key购买 nike

我正在尝试将内存中(但尚未在层次结构中)UIViewController 的 View 渲染到内存中图像缓冲区中,这样我就可以做一些有趣的过渡动画。但是,当我将 UIViewController 的 View 渲染到该缓冲区中时,它总是呈现为好像 Controller 处于纵向方向,无论应用程序其余部分的方向如何。我如何找到这个 Controller ?

我在 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];

此时,即使窗口处于横向,离屏内存缓冲区内容也是纵向的。

想法?

最佳答案

MyUIViewController 如何横向布局其 View 的 subview ?

如果您仅依赖于自动调整大小 mask ,则可以在渲染之前直接设置 controller.view.bounds = CGRectMake(480,300) (或适用于 iPad 的矩形)(如果界面方向为风景。

如果有其他布局代码(例如,在 -[MyUIViewController willAnimateRotationToInterfaceOrientation:duration:] 中),那么您需要确保在渲染之前也调用该代码。

关于iphone - 如何渲染内存中 UIViewController 的 View 景观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com