我正在初始化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;
谢谢。
答案 0 :(得分:1)
您需要将其添加为子视图
[self.view addSubview:view];