Sto cercando un modo per catturare uno screenshot su iPhone con la barra di stato superiore incluso, Attualmente sto usando il seguente codice:Cattura lo schermo di iPhone con barra di stato inclusa?
UIGraphicsBeginImageContext(self.view.bounds.size); //self.view.window.frame.size
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
Il codice di cui sopra prende con successo uno screenshot di iPhone UIView, ma fa non includere la barra di stato superiore (al suo posto è solo uno spazio vuoto di 20px).
ho letto su questo API privato funzione prima, sono curioso di sapere se Apple accetterà l'applicazione per l'iPhone per l'utilizzo di una funzione API privata? –
I sentimenti variano a seconda dell'utilizzo delle API private. Ecco la mia risposta: 1) L'uso di API private è contro le regole di Apple ed è uno dei (pazzamente pochi) ovvi modi in cui la tua app può essere rifiutata o estratta dal negozio; ma ... 2) È probabile che qualcosa di semplice come uno screenshot voli sotto il radar e non venga notato da un reviwer; e ancora ... 3) Apple potrebbe cambiare quella API in qualsiasi momento nel futuro, con qualsiasi versione, in qualsiasi modo, per qualsiasi motivo, senza alcun preavviso. Ritengo che qualsiasi utilizzo di API private stia configurando un mal di testa di supporto e creando il potenziale per un'esperienza utente negativa. –
In questo caso particolare, non penso ci sia molto rischio se la funzione è in accesso dinamico e l'errore è rappresentato: l'app può semplicemente tornare a uno screenshot usando il metodo standard. La particolare implementazione della mia risposta usa il collegamento statico, e questo è un esercizio per il lettore. – rpetrich