我需要从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;
}
答案 0 :(得分:3)
技术是正确的。也许是因为文字被翻转了。您可以尝试为坐标系和原点设置变换。就像你在绘制文字时通常所做的那样。
答案 1 :(得分:0)
我遇到了同样的问题,得到一个白色的矩形而不是文本。为了解决这个问题,我没有使用UIGraphicsBeginImageContext
而是使用UIGraphicsBeginImageContextWithOptions
而是为了opaque(第二个参数)传递了NO,这就是诀窍。
也为尺度(第三个参数)传递0.0并获得一个比例因子等于屏幕的上下文(在我的情况下在视网膜设备中看起来很好)。
查看Apple文档,了解UIGraphicsBeginImageContextWithOptions
here。