2013-10-14 2 views
0

У меня есть пара UIImageViews поверх других, скажем, я хочу сохранить все их в одном изображении. Есть ли способ «скриншот»/подключить все UIImageView к одному?Объединить число UIimageView с одним

Итак, я мог бы использовать:

UIGraphicsBeginImageContext(mv.frame.size); 
[[mv layer] renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Спасибо.

+1

Вы попробовали? Попробовали ли вы рисовать несколько слоев в контексте? – Wain

+0

Попробуйте встроить все изображения в один «UIView» в качестве своих подзонов и попробовать этот код на своем слое. – Hejazi

ответ

1

Вы можете сделать это, сделав скриншот с обзором всех UIImageView. Я написал метод для этого: (. Убедитесь, что вы добавили UIImageViews в ту же точку зрения, например:

[self.view addSubview: image1]; 
[self.view addSubview: image2]; 
[self.view addSubview: image3]; 
[self.view addSubview: image4]; 

затем сделать screenshout о self.view )

+ (UIImage*) screenShotTheArea:(CGRect)area inView:(UIView*)view{ 

     if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
      UIGraphicsBeginImageContextWithOptions(CGSizeMake(area.size.width, area.size.height), NO, [UIScreen mainScreen].scale); 
     else 
      UIGraphicsBeginImageContext(view.bounds.size); 

     CGContextRef c = UIGraphicsGetCurrentContext(); 
     CGContextTranslateCTM(c, -area.origin.x, -area.origin.y); 
     [view.layer renderInContext:c]; 
     UIImage* thePrintScreen = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     return thePrintScreen; 
    } 
+0

В вашем методе мне нужно передать self.view. , но если я хочу только область изображения, которая содержит выше изображениеView? что я тогда делаю? – Yevgeni

1

, если вы хотите быстро и простой подход взять скриншот зрения, который держит ваши изображения

- (UIImage *)screenShot:(UIView *)aView { 
UIGraphicsBeginImageContext(self.view.frame.size); 
[aView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
CGContextSetRGBFillColor (UIGraphicsGetCurrentContext(), 0, 0, 0, 0.4f); 
CGContextFillRect (UIGraphicsGetCurrentContext(), self.view.frame); 
UIGraphicsEndImageContext(); 

return image; } 

и получить его:

UIImage *screenshot = [self screenShot:self.view]; 

Удачи !!

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