在我的iPAD應用程序中,我有兩個視圖控制器,第一個視圖控制器有一個按鈕,當我點擊該按鈕時,我不想在iPAD屏幕中加載第二個視圖控制器,我想獲得第二個視圖控制器的快照。 如果我加載viewcontroler,然後採取快照,那麼它正在工作,但我的要求是做同樣沒有加載viewcontroler在屏幕上。 請給點子或鏈接或代碼片段。如何在ios中不加載屏幕的情況下拍攝viewcontroller的快照?
5
A
回答
9
試試這個: - 製作你想要拍攝的VC實例,然後用這個方法傳遞對象。
+ (UIImage *)renderImageFromView:(UIView *)view withRect:(CGRect)frame {
// Create a new context the size of the frame
UIGraphicsBeginImageContextWithOptions(frame.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// Render the view
[view.layer renderInContext:context];
//[view drawRect:frame];
// Get the image from the context
UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
// Cleanup the context you created
UIGraphicsEndImageContext();
return renderedImage;
}
+0
這很好,但它不起作用,如果你在你的視圖中使用SpriteKit。 – endavid
0
只是實例化你的第二個視圖控制器,並採取截圖,如:
- (void)foo
{
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"secondVC"];
UIImage *screenShot = [self imageFromView:vc.view];
// Do something with screenShot
}
- (UIImage *)imageFromView:(UIView *) view
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, [[UIScreen mainScreen] scale]);
} else {
UIGraphicsBeginImageContext(view.frame.size);
}
[view.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
2
該解決方案基於達拉傑·庫馬爾的答案,但如果你的視圖包含SpriteKit內容以及這會工作。不過,它需要iOS7。你想
在斯威夫特的代碼,與SpriteKit視圖的視圖控制器,問題的
private func takeScreenshot() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.mainScreen().scale)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
不是一部分,但你可以很輕鬆地分享你的截圖,
if let image = screenshot as? AnyObject {
let activity = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
相關問題
- 1. 拍攝UIWebView的快照/屏幕截圖
- 2. 如何在Android上拍攝一個視圖的屏幕快照?
- 3. 裁剪某些部件後拍攝屏幕快照的Ios
- 4. 當拍攝背景時拍攝iOS拍攝的快照
- 5. 如何從python的屏幕給定區域拍攝快照?
- 6. C#哪個是拍攝屏幕快照最快的方法?
- 7. 如何以編程方式拍攝設備屏幕快照?
- 8. 如何以編程方式拍攝屏幕快照?
- 9. 如何以編程方式拍攝iPhone主屏幕快照?
- 10. SendKeys和拍攝照片的屏幕
- 11. 如何在不保存照片的情況下拍照?
- 12. 拍攝快照視頻的快照
- 13. AVCaptureVideoPreviewLayer:拍攝快照
- 14. 拍攝裝載機的快照
- 15. 如何在沒有使用intent的情況下在android studio中拍攝照片
- 16. Android在沒有SurfaceHolder的情況下拍攝照片
- 17. 如何拍攝尚未加載的UIView的屏幕截圖?
- 18. 拍攝UICollectionViewCell的快照
- 19. 拍攝SQL表的快照
- 20. 拍攝快照的CCGLView
- 21. ios在沒有用戶交互的情況下拍攝多張照片
- 22. 拍攝iOS中整個屏幕的屏幕截圖
- 23. 如何在不按回車鍵的情況下拍攝角色?
- 24. 如何在沒有任何問題的情況下輕鬆拍攝照片?
- 25. 拍攝mac屏幕
- 26. 如何在不保存/顯示圖像的情況下拍照
- 27. 如何在全屏模式下拍攝命令提示符窗口的快照
- 28. 如何在沒有CameraCaptureDialog的情況下在Windows Mobile中拍照?
- 29. 如何在Motorola Xoom上拍攝屏幕?
- 30. 拍攝到屏幕中心
怎麼辦爲未在視圖控制器堆棧中加載的VC拍攝快照? – Neeku
你有什麼試過,沒有奏效?顯示代碼並解釋它做錯了什麼。 – Wain
我想如果我做VC的實例,然後一些如何有辦法拍快照.. –