2012-07-17 63 views
0

我想創建一個UIView,我在裏面添加2個UIImageView並從中創建一個UIImage。這是我使用的方法,但我得到一個空白的UIImage。動態UIView到UIImage是空的

這裏是我使用的代碼:

-(UIImage*)getFinalImage{ 

    CGRect rect = CadreImage.frame; 

    UIView *dynaView = [[UIView alloc] initWithFrame:rect]; 
    UIImageView *frontCadre = [[UIImageView alloc] initWithImage:TheImage]; 

    [dynaView addSubview:frontCadre]; 

    UIGraphicsBeginImageContextWithOptions(dynaView.bounds.size, dynaView.opaque, 0.0); 
    [dynaView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return img; 
} 

任何幫助,將不勝感激。

謝謝。

+1

NSLog'rect','frontCadre'等。我的猜測是一路搞砸了。 – 2012-07-17 16:45:44

+0

frame好像不錯: '2012-07-17 18:49:20 .203 Pixamaz [1095:907] w:320.000000 2012-07-17 18:49:20.215 Pixamaz [1095:907] h:367.000000' 其中H W代表高度和寬度。 – 2012-07-17 16:50:43

+0

哦,你有沒有添加dynaview到屏幕上?我相信你必須添加,作爲你當前的視圖的子視圖,所以圖形可以實際上拉動像素數據 – Msencenb 2012-07-17 17:10:36

回答

0

下面是我用搶層/截圖(注意,這是針對整個屏幕,而不是一個具體的層+處理視網膜顯示器)的代碼:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    UIGraphicsBeginImageContextWithOptions(self.view.window.bounds.size, NO, [UIScreen mainScreen].scale); 
else 
    UIGraphicsBeginImageContext(self.view.bounds.size); 
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

你能還設置斷點和跳躍通過程序來驗證TheImage不是零?

+0

TheImage不是零。你使用的代碼與我的代碼使用相同的功能,這是尷尬的我的不工作。 – 2012-07-17 16:56:39

+0

它的確使用了相同的結果......您是否使用視網膜屏幕進行此測試?或只是模擬器? – Msencenb 2012-07-17 17:04:29

+0

也可以嘗試使用1.0而不是0.0的比例因子 – Msencenb 2012-07-17 17:06:03