2013-12-21 5 views
1

я создаю UIImageView с двумя UILabel в качестве подвидов из него:Создание UIImage из UIImageView

UIImageView *img=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, [[UIScreen mainScreen] bounds].size.height)]; 
    img.backgroundColor=self.view.backgroundColor; 

    UILabel *textOne=[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 290, 250)]; 
    textOne.text=_textOneLabel.text; 
    textOne.textColor=_textOneLabel.textColor; 

    UILabel *textTwo = [[UILabel alloc] initWithFrame:CGRectMake(100,180,200,100)]; 
    textTwo.text=_textTwoLabel.text; 
    textTwo.textColor=_textTwoLabel.textColor; 

    [img addSubview:textOne]; 
    [img addSubview:textTwo]; 

    UIImageWriteToSavedPhotosAlbum(img.image, nil, nil, nil); //img.image is null 

Я хочу создать UIImage, чтобы сохранить его в камеру ролл с UIImageView и 2 создан UILabel. img.image возвращает null, потому что изображение не присвоено UIImageView.
У вас есть идея, как достичь этого?

+0

Вы пытаетесь записать текст на картинке? –

+0

Вы не добавили изображения в свой кадр изображения, вы указали только его свойство цвета фона. – ldindu

ответ

6

Используйте метод ниже, чтобы конвертировать UIImageView в UIImage.

UIImage *image = [self ChangeImageViewToImage:img]; 

// Метод

-(UIImage *) ChangeImageViewToImage : (UIImageView *) view{ 

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); 
[view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

return img; 

} 
+0

Большое спасибо за ваш отличный ответ, однако у меня есть небольшая проблема, это то, что изображение немного размыто. Могу ли я его оптимизировать? – androniennn

+0

Используйте код, который я обновил только сейчас. Это даст вам изображение сетчатки – Mavericks

+0

Я уже использую его, и он немного размыт. – androniennn

1

Это должно помочь вам

/* Creates an image with a home-grown graphics context, burns the supplied string into it. */ 
- (UIImage *)burnTextIntoImage:(NSString *)text :(UIImage *)img { 

UIGraphicsBeginImageContext(img.size); 

CGRect aRectangle = CGRectMake(0,0, img.size.width, img.size.height); 
[img drawInRect:aRectangle]; 

[[UIColor redColor] set];   // set text color 
NSInteger fontSize = 14; 
if ([text length] > 200) { 
    fontSize = 10; 
} 
UIFont *font = [UIFont boldSystemFontOfSize: fontSize];  // set text font 

[ text drawInRect : aRectangle      // render the text 
     withFont : font 
    lineBreakMode : UILineBreakModeTailTruncation // clip overflow from end of last line 
     alignment : UITextAlignmentCenter ]; 

UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext(); // extract the image 
UIGraphicsEndImageContext();  // clean up the context. 
return theImage; 
} 
+0

У меня уже есть тексты (UILabels) с шрифтом, я просто хочу сохранить UIImageView + 2 созданные UILabels в один UIImage. – androniennn

+0

Вот что будет делать эта функция. Вам нужно немного настроить функцию, чтобы принять столько «UILabels» и «UIImageView», которые вы хотите. –

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