从UITextView或UILabel中提取UIImage会产生白色图像

时间:2010-03-14 22:50:57

标签: iphone uiview uiimage uitextview uilabel

我需要从UITextView或UILabel中获取UIImage。我有一个方法可以从其他类型的视图([UIViewController视图],MKMapView,UIButtons)成功地提取图像,但我只是为我的UITextView获取白色矩形。

我一直把头靠在墙上一段时间,并怀疑一些非常非常基本的东西。

非常感谢!

@interface TaskAccomplishmentViewController : UIViewController {

    MKMapView *mapView;
    UILabel *timeLeftText;
    UITextView *challengeText;

    UIButton *successButton;

<snip>

- (void) setChallangeImageToImageFromChallenge {

    // works
    // [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:mapView]];
    // [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:[self view]]];
    // [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:successButton]];

    // doesn't work
    // [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:timeLeftText]];
    [currChallenge setChallengeImage:[UIImageUtils grabImageFromView:challengeText]];

}

和UIView代码中的grabImage

+(UIImage *)grabImageFromView: (UIView *) viewToGrab {

    UIGraphicsBeginImageContext(viewToGrab.bounds.size);

    [[viewToGrab layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return viewImage;
}

2 个答案:

答案 0 :(得分:3)

技术是正确的。也许是因为文字被翻转了。您可以尝试为坐标系和原点设置变换。就像你在绘制文字时通常所做的那样。

答案 1 :(得分:0)

我遇到了同样的问题,得到一个白色的矩形而不是文本。为了解决这个问题,我没有使用UIGraphicsBeginImageContext而是使用UIGraphicsBeginImageContextWithOptions而是为了opaque(第二个参数)传递了NO,这就是诀窍。

也为尺度(第三个参数)传递0.0并获得一个比例因子等于屏幕的上下文(在我的情况下在视网膜设备中看起来很好)。

查看Apple文档,了解UIGraphicsBeginImageContextWithOptions here