Захват UIImageview для изображения в Objective C, которые содержат UIView - PullRequest
0 голосов
/ 07 мая 2018

У меня есть UIimageview, у меня есть прозрачный прямоугольник, который я могу изменить, перетаскивая, проблема в том, что я не могу сохранить изображение (с отрекомендацией выше)

я пытался

-(UIImage *)imageWithViewOld:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}

но он показывает только мой UIImageview без моего пользовательского UIview

я даже пытался добавить

     [view.layer renderInContext:UIGraphicsGetCurrentContext()];
     [self.myRect.layer renderInContext:UIGraphicsGetCurrentContext()];

но на сгенерированном изображении я вижу прямоугольник, но над моим изображением не внутри

1 Ответ

0 голосов
/ 21 мая 2018

Звучит так, как будто у вас есть изображение, и вы хотите перетащить прозрачный вид поверх изображения и сохранить обрезанную версию представления изображения. Проблема с тем, как выглядит ваш код, заключается в том, что оба эти представления являются родственными. Самое простое решение, которое вы можете сделать, это добавить прозрачное представление как подпредставление к представлению изображения и затем использовать -drawViewHierarchyInRect:afterScreenUpdates:.

-(UIImage *)imageWithViewOld:(UIView *)view croppedTo:(CGRect)rect
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view drawViewHierarchyInRect:rect afterScreenUpdates:NO];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...