2013-12-21 62 views
1

創建的UIImage我創建了一個帶有兩個UILabelUIImageView作爲它的子視圖:從一個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中創建UILabelimg.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'。 –