2016-04-06 2 views
0

Я пытаюсь сделать снимок экрана моего UIImageView и UILabel, который находится поверх этого.ScreenShot UILabel и что находится в UIImageView

То, что я до сих пор захватывает UIImage в ImageView, а затем накладывает на него наложение, но позиционирование UILabel ошибочно. Я устанавливаю размер захвата в фактический размер изображения (чего я не хочу).

Я просто хочу, чтобы у вас был снимок экрана, как именно он появляется на экране.

CGSize imageSize = self.imageFromOtherView.size; 
// define the size and grab a UIImage from it 
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); 

[self.imageFromOtherView drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)]; 

[self.socialLabel.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

Вы хотите получить снимок экрана всего окна или только вашего изображения на экране? С вашего вопроса немного сложно сказать. – fsb

ответ

1

Создайте UIView для хранения UIImageView и UILabel. Затем передайте этот вид контейнера через этот код. У меня есть мое представление как свойство, называемое viewForPhoto, поэтому, когда код вызывается, он только захватывает это представление. Вы можете настроить его так, чтобы он получал представление. Это вернет UIImage, который вы хотите.

- (UIImage *)imageByRenderingView 
{ 
    UIGraphicsBeginImageContextWithOptions(self.viewForPhotoView.bounds.size, NO, 0.0); 
    [self.viewForPhotoView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return resultingImage; 
} 
+0

спасибо за помощь! – Ro4ch

1

Добавить оба эти мнения к общему мнению контейнера, а затем вызвать - (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates представления, чтобы сделать его в контексте.

Смежные вопросы