4

我正在制作一个 Ipad 应用程序,它包含大约 100 个代表项目的不同视图。为了能够在项目之间快速滚动,我正在尝试创建一个缩略图视图。问题是我必须在 UIViewController 本身显示在屏幕上之前制作缩略图。

目前我正在使用这段代码:

ProjectViewController2 * page2 = [[ProjectViewController2 alloc]initWithNibName:@"ProjectViewController2" bundle:nil displayRightArrow:FALSE media:nil];
[page2 setMyMedia:media];
[page2 configurePage];
CGSize size = [page2.view bounds].size;
UIGraphicsBeginImageContext(size);
[[page2.view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
NSString * filePath= [NSHomeDirectory() stringByAppendingFormat:@"/Documents/project/%@", [media fileName]];
[UIImageJPEGRepresentation(newImage, 1.0) writeToFile:filePath atomically:TRUE];
UIGraphicsEndImageContext();

这行得通,我从 UIViewController 获得了一个屏幕截图,但没有主图像。这些图像不是在 NIB 文件中设置的,而是在 configurePage 函数中设置的。在 NIB 文件中设置的背景颜色和菜单栏在缩略图中可见。

我怀疑我没有看到图像,因为 UIViewController 没有显示在屏幕上,因此没有调用某种绘图函数。

任何帮助都非常感谢!

斯蒂金

4

1 回答 1

0

什么时候调用 configurePage 方法?在 ViewDidLoad 上?在哪里使用 initWithNibName 初始化 ProjectViewController,因此可能显示 nib 元素的原因,您可以获得它们的图像表示。我的猜测是编写一个自定义初始化程序,它将项目图像作为初始化序列的一部分,或者可能测试将 configurePage 代码移动到其他 viewController 方法之一,例如 viewWillAppear。只是一个想法。

于 2012-11-28T13:59:22.503 回答