【问题标题】:Create a thumbnail from an UIViewController without it showing从 UIViewController 创建缩略图而不显示
【发布时间】:2012-11-28 13:37:57
【问题描述】:

我正在制作一个 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 没有显示在屏幕上,因此没有调用某种绘图函数。

非常感谢任何帮助!!!

风格

【问题讨论】:

    标签: ios ipad


    【解决方案1】:

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

    【讨论】:

    • configurePage 方法在页面构建完成后立即被调用。请参见第 3 行的代码 sn-p
    猜你喜欢
    • 2012-06-16
    • 2019-07-11
    • 2019-11-27
    • 2011-05-07
    • 2017-08-07
    • 2011-01-18
    • 2015-09-16
    • 2014-09-24
    • 1970-01-01
    相关资源
    最近更新 更多