2

我正在使用 UITextView 来呈现一些文本。我正在使用以下代码使我的主视图更大,以将输出设置为更高的分辨率(我还将所有子视图缩放相同的因子)。

    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 元素无法正确呈现(大部分只是空白)。

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

谢谢阅读

4

3 回答 3

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();
于 2012-09-10T04:28:38.820 回答
1

最终使用标签,仅用于渲染。所以 UIText 视图用于在界面中显示,以及用于交互,但它们被暂时隐藏并被标签替换以进行渲染。

于 2012-09-17T03:32:36.827 回答
0

为了以 Mrwolfy 的回答为基础,我还设法通过将UITextViewin的内容复制到 a 来解决类似的问题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];

于 2019-12-10T14:38:50.103 回答