извлечение UIImage из UITextView или UILabel дает белое изображение - PullRequest
7 голосов
/ 15 марта 2010

Мне нужно получить UIImage из UITextView или UILabel. У меня есть метод, который успешно извлекает изображение из других типов представлений ([представление 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

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

    UIGraphicsBeginImageContext(viewToGrab.bounds.size);

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

Ответы [ 2 ]

3 голосов
/ 15 марта 2010

Техника правильная. Может быть, это потому, что текст перевернут. Вы можете попытаться установить преобразование для системы координат и начала координат. Как вы обычно делаете при рисовании текста.

0 голосов
/ 19 мая 2016

У меня возникла та же проблема: вместо текста получился белый прямоугольник. Чтобы решить эту проблему, вместо использования UIGraphicsBeginImageContext я использовал UIGraphicsBeginImageContextWithOptions и передал NO для непрозрачного (второй аргумент), который добился цели.

Также передан 0.0 для масштаба (третий аргумент) и для получения контекста с масштабным коэффициентом, равным коэффициенту экрана (чтобы хорошо выглядеть в устройстве с сетчаткой в ​​моем случае).

Проверьте Apple документ о UIGraphicsBeginImageContextWithOptions здесь .

...