szukam sposobu na zrzut ekranu na iPhone z góry pasek stanu wliczone Obecnie używam następujący kod:Przechwytywanie ekranu iPhone'a z dołączonym paskiem stanu?
UIGraphicsBeginImageContext(self.view.bounds.size); //self.view.window.frame.size
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
Powyższy kod powodzeniem zajmuje zrzut ekranu z iPhone UIView lecz nie obejmuje górnego paska stanu (w jego miejscu jest tylko puste miejsce o rozmiarze 20 pikseli).
Czytałem o tej prywatnej API funkcja wcześniej, jestem ciekawy, czy Apple zaakceptuje aplikację na iPhone'a do korzystania z funkcji prywatnego API? –
Uczucia różnią się w zależności od korzystania z prywatnych interfejsów API. Oto moje zdanie: 1) Korzystanie z prywatnych interfejsów API jest niezgodne z zasadami firmy Apple i jest jednym z (niewiarygodnie mało) oczywistych sposobów odrzucania lub pobierania Twojej aplikacji ze sklepu; ale ... 2) Coś tak prostego jak zrzut ekranu prawdopodobnie będzie latać pod radarem i nie zostanie zauważone przez osobę, która przeszła; a jednak ... 3) Apple może zmienić to API w dowolnym momencie w przyszłości, z dowolnym wydaniem, w dowolny sposób, z dowolnego powodu, bez żadnego ostrzeżenia. Uważam, że każde użycie prywatnych interfejsów API ustawia się na wsparcie bólu głowy i stwarza ryzyko złego doświadczenia użytkownika. –
W tym konkretnym przypadku, nie sądzę, że istnieje duże ryzyko, jeśli funkcja jest dynamicznie dostępna, a awarie są uwzględniane: aplikacja może po prostu wrócić do zrzutu ekranu przy użyciu standardowej metody. Konkretna implementacja tego w mojej odpowiedzi używa jednak statycznego linkowania i jest to ćwiczenie dla czytelnika. – rpetrich