0

我正在尝试输出我的 iPhone 界面的高分辨率版本。我正在使用标签 imagesViews 和 textViews 来创建内容。我正在使用 renderInContext 制作主视图的高分辨率图像,并缩放内容以匹配。标签和 imageViews 似乎工作得很好,但是当 textView 正确缩放和定位时,它会隐藏一些文本。

这是基本代码:

UIGraphicsBeginImageContext(CGSizeMake(1536, 2048));
myExportView.frame = CGRectMake(0, 0, 1536, 2048);
[myLabel setFrame:CGRectMake(myLabel.frame.origin.x*4.4232, myLabel.frame.origin.y*4.4232, myLabel.frame.size.width*4.4232, myLabel.frame.size.height*4.4232)];
[myLabel setFont:[UIFont fontWithName:@"Arial" size:myLabel.font.pointSize*4.4232]];
[myTextView setFrame:CGRectMake(myTextView.frame.origin.x*4.4232, myTextView.frame.origin.y*4.4232, myTextView.frame.size.width*4.4232, myTextView.frame.size.height*4.4232)];
[myTextView setFont:[UIFont fontWithName:@"Arial" size:myTextView.font.pointSize*4.4232]];
[[myExportView layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);

这是界面和输出的视觉效果,左侧是 640 × 960 界面,右侧是我的 1536 × 2048 输出图像(如预期的那样)注意标签和 textView 已正确缩放,但 textView 中的文本离开了。

在此处输入图像描述

如果您想看一下,这里是项目本身:owolf.net/uploads/StackOverflow/exportTest.zip

在此处输入图像描述 这里的更新是左侧的 textView,以各种方式放大到 4.5,除了在 x 中它只有 *2,在右侧,x 被缩放到 3。注意文本开始被剪裁。

有任何想法吗?非常感谢帮助

4

2 回答 2

0

我对您的代码进行了一些实验:

- (IBAction)export:(id)sender {

    UIGraphicsBeginImageContext(CGSizeMake(1536, 2048));

    myExportView.frame = CGRectMake(0, 0, 1536, 2048);

   [myLabel setFrame:CGRectMake(myLabel.frame.origin.x*4.4232, myLabel.frame.origin.y*4.4232, myLabel.frame.size.width*4.4232, myLabel.frame.size.height*4.4232)];


   [myLabel setFont:[UIFont fontWithName:@"Arial" size:myLabel.font.pointSize*4.4232]];

   [myTextView setFrame:CGRectMake(myTextView.frame.origin.x*4.4232, myTextView.frame.origin.y*4.55, myTextView.frame.size.width*4.4232, myTextView.frame.size.height*4.4232)];
    [myTextView setFont:[UIFont fontWithName:@"Arial" size:myTextView.font.pointSize*4.4232]];

   [[myExportView layer] renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);

       // adding for experiment
   UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
   scroll.contentSize = CGSizeMake(1536, 2048);
   [self.view addSubview:scroll];
   [scroll addSubview:myExportView];

   [scroll addSubview:myTextView];
   [scroll addSubview:myLabel];

}

(我已更改 myTextView.frame.origin.y*4.55)

之所以发生这种情况是因为您使用了相同的系数,并且结果文本视图的偏移量比需要的略高,因此文本似乎隐藏了。它被uilabel隐藏。尝试使用系数进行实验,在这种情况下,尺寸的增加不是线性的。祝你好运!

于 2012-08-08T07:04:30.320 回答
0

我最终为此使用了一个标签。请参阅此线程以获取解决方案:

顶部对齐的UILabel,使文本贴在标签视图的顶部-ios

于 2012-08-13T04:26:24.800 回答