在iOS设备上“关闭屏幕”时,UIText View的内容无法呈现

时间:2012-09-10 04:14:09

标签: ios xcode uitextview

我正在使用UITextView来呈现一些文本。我使用以下代码来渲染我的主视图更大,以设置输出更高的res(我也按相同因子缩放所有子视图)。

    UIGraphicsBeginImageContext(CGSizeMake(ImageView.frame.size.width*4, ImageView.frame.size.height*4));
[outputView setFrame:CGRectMake(outputView.frame.origin.x, outputView.frame.origin.y, outputView.frame.size.width*4, outputView.frame.size.height*4)];
     [[outputView layer] renderInContext:UIGraphicsGetCurrentContext()];

在缩放方面工作正常。唯一的问题是,如果它是“屏幕外”,UITextView元素将无法正确呈现。所以在没有* 4比例因子的情况下,所有内容都可以很好地呈现,但是使用它时,屏幕上推出的UITextView元素不能正确呈现(大多数只是空白)。

有没有办法覆盖它,强制它渲染?

感谢您阅读

3 个答案:

答案 0 :(得分:2)

这样做:

  CGAffineTransform newtransform = CGAffineTransformMakeScale(4.0, 4.0);
  self.view.transform = newtransform;
  CGRect newFrame = CGRectApplyAffineTransform(self.view.frame, newtransform);
  //CGSize fittingSize = [yourTextView sizeThatFits:CGSizeZero];
  UIGraphicsBeginImageContext(newFrame.size);
  [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImahe *capImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

答案 1 :(得分:0)

使用标签结束,仅用于渲染。因此,UIText视图用于在界面中显示和交互,但它们被临时隐藏并被标签替换以进行渲染。

答案 2 :(得分:0)

基于Mrwolfy的答案,我还设法通过将UITextView的内容复制到UILabel中来解决了类似的问题-无论出于何种原因,它的行为似乎都有些不同。这是我使用的代码:

UILabel* contents = [[UILabel alloc] initWithFrame:textView.frame];
[textView.superview addSubview:contents];
contents.numberOfLines = 0;
contents.lineBreakMode = NSLineBreakByWordWrapping;
contents.attributedText = textView.attributedText;

textView.hidden = YES;

// Now render the scrollview in slices
for (CGFloat y = 0; y < scrollView.contentSize.height; y += scrollView.frame.size.height) {
    [scrollView setContentOffset:CGPointMake(0, y) animated:NO];
    [scrollView.layer renderInContext:context];
}

textView.hidden = NO;

[contents removeFromSuperview];