UITextView在缩放输出时隐藏文本

时间:2012-08-08 06:23:07

标签: ios xcode fonts uitextfield uilabel

我正在尝试输出我的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中消失了。

enter image description here

如果你想看看这个项目本身:owolf.net/uploads/StackOverflow/exportTest.zip

enter image description here 这里的更新是textView,在左边,按比例放大到4.5,除了在x中它只有* 2,在右边x被缩放为3.注意文本开始被修剪。

有什么想法吗?非常感谢

2 个答案:

答案 0 :(得分: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隐藏。尝试使用系数进行实验,在这种情况下,尺寸的增加不是线性的。祝你好运!

答案 1 :(得分:0)

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

Top aligned UILabel, make text stick to top of label view -ios