2014-09-06 98 views
2

一些背景:我只是試圖做一個簡單的程序使用xcode 6測試版7在迅速截圖iphone後按下按鈕。它在SpiteKit和遊戲場景中完成。背景是一個隨機的PNG圖像和「hello world」默認示例文本。我編程放壓能按鈕(默認飛船圖像的按鈕)在gamescene didMoveToView功能使用下面的代碼:截圖在iPhone上迅速只有一個白色背景

button.setScale(0.2) 
screen.frame = CGRect(origin: CGPointMake(self.size.width/4, self.size.height/1.5), size: button.size) 
screen.setImage(playAgainButton, forState: UIControlState.Normal) 
screen.addTarget(self, action: "action:", forControlEvents: UIControlEvents.TouchUpInside) 
self.view!.addSubview(screen) 

此項設置它與功能在屏幕上我的新聞,能鍵使用該下一個代碼進行屏幕截圖:

func action(sender:UIButton!){ 
    UIGraphicsBeginImageContext(self.view!.bounds.size) 
    self.view!.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) 
} 

所以這個代碼採取截圖,但是當我看着照片,只壓按鈕可以顯示與圖像的其餘部分是白色的。圖像顯示如下:

screenshot

下面,我想截屏應該是這樣的,因爲這是在屏幕的樣子在模擬器(我只是用一些隨機圖像/文本作爲背景):

enter image description here

有人能向我解釋爲什麼截圖程序是不是也考慮背景的圖片,以及如何解決它?

我在網上看過,我還沒有看到任何問題是解決我的問題。在線我看到一些類似的問題,並嘗試了他們的修復:我導入了quartzCore,coreGraphics和coreImages,但沒有修復。另外,我嘗試使用ViewController並在其上設置一個UI按鈕以使用IBaction來截屏,但仍然獲得相同的白色背景圖像。我試過不同的背景圖片,結果相同。

我是相當新的編程,所以,任何幫助將不勝感激!先謝謝你!

+0

我發現了一個H液ere:http:// stackoverflow。com/a/27764590/1139044 – Nicholas 2015-01-04 10:39:38

+0

我想你可以在這裏找到你的問題的答案:http://stackoverflow.com/a/27764590/1139044 – Nicholas 2015-01-07 09:12:32

回答

1

你是否將背景設置爲圖案背景顏色? =>也許這不符合renderInContext的預期。

self.view中呈現的背景圖像是子視圖還是其drawRect:方法? =>如果不是,當然它不會被渲染。

獲得的截圖最簡單的方法是用功能

UIImage *_UICreateScreenUIImage(); 

你必須先聲明它,因爲它的一個未公開的函數。我不確定蘋果是否會接受一個包含此功能調用的應用程序,但我認爲它會好起來的(我知道評論準則說你不能使用無證函數,但我認爲他們不會在意這種情況)它可以在iOS 5 - iOS 8(我已經測試過,不關心iOS 4)上工作。

另一件應該工作的事情是渲染整個屏幕而不是一個特定的視圖:

UIGraphicsBeginImageContext(self.view!.window!.bounds.size) 
self.view!.window!.layer.renderInContext(UIGraphicsGetCurrentContext()) 
let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) 

(請注意,我換成view!view!.window!得到唯一的一個窗口實例。)

+0

對不起,我對你的一些迴應感到困惑。我對編程相當陌生,所以我不瞭解很多編程內容。讓我們看看......對於第一個問題:我不確定你的意思。第二個問題背景設置爲self.addChild(背景)。我是不是將它設置爲子視圖?第三個問題/部分,我會試一試。第四部分,我試圖把視圖!窗口!並沒有奏效。感謝您的快速回復! – Kirby 2014-09-06 17:54:26

+0

@邁克爾我有同樣的問題,你的建議不起作用。現在我正在嘗試使用UICreateScreenUIImage() – Nicholas 2015-01-04 10:21:59