Nella mia applicazione iPAD, ho due viewcontrollers, il primo viewcontroller ha un pulsante, voglio ottenere lo snapshot del secondo viewcontroler quando clicco su quel pulsante, senza caricare il secondo viewcontroller nella schermata iPAD. Se carico viewcontroler e scatto snapshot, funziona ma il mio requisito è quello di fare lo stesso senza caricare viewcontroler sullo schermo. Si prega di dare idea o link o snippet di codice.Come scattare un'istantanea di un viewcontroller senza caricare sullo schermo in ios?
5
A
risposta
9
provare questo: - Creare l'istanza di VC per l'acquisizione di schermate e quindi passare l'oggetto con questo metodo.
+ (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
Questo è bello, ma non funziona se stai usando SpriteKit nella tua vista. – endavid
0
Basta istanziare il controller secondo punto di vista, e prendere uno screenshot, come:
- (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
Questa soluzione si basa sulla risposta Dheeraj Kumar, ma questo funzionerà se la vista contiene contenuti SpriteKit pure. Richiede iOS7, però.
Il codice Swift, per il ViewController con la vista 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
}
Non
parte della domanda, ma si può quindi condividere lo screenshot molto facilmente,
if let image = screenshot as? AnyObject {
let activity = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
Problemi correlati
- 1. Disegna parte dell'immagine sullo schermo (senza caricare tutto in memoria)
- 2. iOS in-call aggiornamento barra di stato viewcontroller presentato modaly sullo schermo
- 3. disegnare sullo schermo senza modulo
- 4. iOS Presente viewController ottenere schermo nero
- 5. iOS: acquisizione di particelle CAEmitterLayer sullo schermo
- 6. Come scattare istantanee google maps senza visualizzare effettivamente la mappa
- 7. iOS: contenuto dello specchio sullo schermo
- 8. Ruby $ stdin.gets senza mostrare caratteri sullo schermo
- 9. Come caricare un altro viewController a livello di codice da un ViewController in MonoTouch
- 10. Come caricare un XIB con un ViewController di primo livello?
- 11. iOS scattare foto programmaticamente
- 12. Come trascinare un'immagine senza problemi sullo schermo utilizzando puro javascript
- 13. OpenCV Android: acquisizione di cornici senza sfondo sullo schermo
- 14. Pubblicazione di file .fig senza averli visualizzati sullo schermo
- 15. Centratura di Windows sullo schermo
- 16. IOS: respingere due viewController
- 17. Come mostrare la bussola sullo schermo?
- 18. IKImageBrowserView sullo schermo retina
- 19. Safari Mobile IOS 6 Scattare una foto
- 20. Come visualizzare più di $ mdToast sullo schermo
- 21. Stampa sullo schermo in un'attività di rake
- 22. javascript animazione interrotta nel browser ios safari webkit quando il dito è sullo schermo senza sollevare
- 23. Come scattare diverse immagini da Camera ios
- 24. Come posso scrivere direttamente sullo schermo?
- 25. Accesso a FIRUser in ViewController in iOS
- 26. Come ottenere la posizione sullo schermo di un NSStatusItem
- 27. Scorrimento Vim senza cambiare i cursori sullo schermo posizione
- 28. Elemento posizione Android sullo schermo
- 29. rilevamento quando un UICollectionCell di iOS sta uscendo dallo schermo
- 30. Come visualizzare le immagini PIL sullo schermo?
Come vuoi fare uno snapshot di un VC che non è ancora caricato nello stack del controller di visualizzazione? – Neeku
Cosa hai provato che non ha funzionato? Mostra il codice e spiega cosa ha fatto di sbagliato. – Wain
Penso che se faccio l'istanza di VC e poi un po 'come c'è un modo per scattare un'istantanea .. –