2013-04-03 137 views
1

我想實現的是拍攝未添加爲子視圖的UIView的圖像,然後將圖像添加到視圖中,然後將視圖添加到視圖層次。渲染不在視圖層次結構中的UIView圖層

我已經搜索,現在試了一會兒,並相信,這是根本不可能的。


顯然的問題是,該觀點尚未擬定(稱爲drawRect:我猜的),如果它沒有被添加作爲一個子視圖。 其實我認爲renderInContext:會自己調用drawRect/layer

將它作爲子視圖添加到imageContext之前是不夠的,因爲它不會立即呈現。

我採取的截圖與renderInContext:與視圖層,看到這裏我的代碼:

[self.view addSubView:view]; 
UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextTranslateCTM(context, -frame.origin.x, -frame.origin.y); 

[view.layer renderInContext:context]; 

UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

所以我的問題是,已經有人成功地呈現不可見UIView如果怎麼樣?

回答

3

好吧,這很尷尬。
經過與非常友好的蘋果開發支持的郵件對話後,我們檢查了我的代碼,我們注意到我簡單地將hidden屬性設置爲YES。 - 不要那樣做。

因此,直接製作不在視圖層次結構中的視圖的屏幕截圖。
這是我的錯,爲什麼它沒有工作。

0

嘗試將UIView添加到層次結構,但保持隱藏狀態。

- (void)takeScreenSnapshot { 

    UIView *capturedView = self.view;  
    UIView *hiddenView = self.hiddeniew; // hidden view which is 
              // a part of capturedView 
    hiddenView.hidden = NO; 

    BOOL retina = [self isRetinaDisplay]; 
    UIImage *image = [capturedView captureImageWithScale:(retina) ? 2.f : 1.f]; 

    hiddenView.hidden = YES; 
} 
+0

可悲的不是我想要的。即使它能工作,我也不能在之前添加視圖。 – yinkou