Ho creato una vista UIImagePicker/fotocamera, con una barra degli strumenti e un pulsante personalizzato per scattare un'istantanea. Non posso davvero passare all'utilizzo del modo predefinito a causa del pulsante personalizzato e sto attingendo in cima alla vista.Forzare immediatamente un UIView per il ridisegno, anziché durante il ciclo di esecuzione successivo
Quando si preme il pulsante, voglio prendere uno screenshot utilizzando UIGetScreenImage(); tuttavia, la barra degli strumenti sta rivelando nell'immagine, anche se mi nascondo prima:
//hide the toolbar
self.toolbar.hidden = YES;
// capture the screen pixels
CGImageRef screenCap = UIGetScreenImage();
Sono abbastanza sicuro che questo è perché, anche se la barra degli strumenti è nascosta, esso viene ridisegnato una volta la funzione ritorna ed entriamo il ciclo di esecuzione successivo, dopo che UIGetScreenImage viene chiamato.
Ho provato a fare la seguente aggiunta, ma non ha aiutato:
//hide the toolbar
self.toolbar.hidden = YES;
[self.toolbar drawRect:CGRectMake(0, 0, 320, 52)];
// capture the screen pixels
CGImageRef screenCap = UIGetScreenImage();
Ho anche provato ad utilizzare setNeedsDisplay, ma che non funziona o perché ancora una volta il pareggio accade dopo la funzione ritorna attuali.
Qualche suggerimento? Grazie!
Questo da solo non lo ha fatto, ma una piccola aggiunta ha funzionato. Ho chiamato il selettore di cattura schermo con [self performSelector: @selector (captureScreen) withObject: nil afterDelay: 0]; e questo ha fatto il lavoro. Grazie per il piombo! –
[self performSelector: @selector (captureScreen) withObject: nil afterDelay: 0]; effettivamente esegue "captureScreen" sul ciclo di esecuzione successivo. –