UIView不会渲染

时间:2014-08-01 18:31:57

标签: ios objective-c uiview

我正在初始化UIView以便稍后将其捕获为图像并用作NSTextAttachment。初始化发生在viewDidLoad,原因是我无法精确定位视图永远不会呈现。即使它在主线程上被调用了。当我使用UIGraphicsBeginImageContextWithOptions捕获它时,生成的图像只是一个空白的白色图像。

如果我在调试器中快速查看视图,它只会打开一个带有正确边界的空白窗口,并显示错误。如果我在控制台中po,它将输出具有正确边界和文本的视图和子视图。

即便是一个非常简单的例子:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[view setBackground:[UIColor redColor]];

不会渲染。

我理解这个问题非常模糊,但如果有人能够对我应该在哪里找到问题有所了解,我真的很感激!

示例使用代码

CustomView *view = [[CustomView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)];
view.title = @"View Title";
// ... more view setup

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0f);
[view drawViewHierarchyInRect:view.frame afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = viewImage;
NSAttributedString *attString = [NSAttributedString attributedStringWithAttachment:attachment];
self.textView.attributedString = attString;

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将其添加为子视图

[self.view addSubview:view];