Chcę, aby zrzut ekranu obrazu na ekranie został zapisany w zapisanej bibliotece zdjęć.
ios
iphone
screenshot
Ukłucie
źródło
źródło
Poniższa metoda działa również dla obiektów OPENGL
źródło
UIGetScreenImage
jest prywatnym APIźródło
Źródło .
źródło
UIImage *myImage = [[UIImage alloc] initWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationDownMirrored];
i nie potrzebujesz już 'buffer2'.W SWIFT
źródło
Zobacz ten post, wygląda na to, że możesz teraz używać UIGetScreenImage ().
źródło
Od iOS10 jest to nieco prostsze. UIKit jest wyposażony w to,
UIGraphicsImageRender
co pozwalaApple Docs - UIGraphicsImageRenderer
Możesz więc teraz zrobić coś takiego:
Wiele odpowiedzi tutaj działało w większości przypadków. Ale kiedy próbowałem zrobić migawkę
ARSCNView
, mogłem to zrobić tylko przy użyciu metody opisanej powyżej. Chociaż warto zauważyć, że w tej chwili ARKit jest nadal w wersji beta, a Xcode jest w wersji beta 4źródło
Spowoduje to zapisanie zrzutu ekranu, a także zwróci zrzut ekranu.
źródło
Myślę, że poniższy fragment kodu pomógłby, jeśli chcesz wyświetlić pełny ekran ( z wyjątkiem paska stanu ), po prostu zastąp AppDelegate nazwą delegata aplikacji, jeśli to konieczne.
źródło
Nie mogłem znaleźć odpowiedzi przy implementacji Swift 3. Więc to jest tutaj.
źródło
W przypadku systemu iOS 7.0 lub nowszego ...
Jeśli chcesz zrobić zrzuty ekranu widoku, powiedzmy (myView), możesz to zrobić za pomocą jednej linii:
źródło
To zadziała ze swift 4.2 , zrzut ekranu zostanie zapisany w bibliotece, ale nie zapomnij edytować
info.plist @ NSPhotoLibraryAddUsageDescription
:źródło
Pobierz zrzut ekranu z widoku
Zapisz obraz w Zdjęciach
Jak
źródło
Pobierz zrzut ekranu z widoku:
Mam nadzieję, że tego właśnie szukasz. Wszelkie wątpliwości wróć do mnie. :)
źródło
Odpowiadam na to pytanie, ponieważ jest ono bardzo popularne i istnieje wiele odpowiedzi, a także Swift i Obj-C.
Zastrzeżenie To nie jest mój kod ani moje odpowiedzi, to tylko po to, aby pomóc ludziom, którzy tu wylądowali, znaleźć szybką odpowiedź. Znajdują się tam linki do oryginalnych odpowiedzi, w których można podać kredyt! Jeśli wykorzystasz ich odpowiedź, uhonoruj oryginalne odpowiedzi +1!
Za pomocą
QuartzCore
W Swift
Uwaga: w związku z programowaniem może być konieczne dokonanie aktualizacji , więc edytuj lub daj mi znać! * Również jeśli nie udało mi się dołączyć odpowiedzi / metody, którą warto uwzględnić, również daj mi znać!
źródło
Inną opcją jest użycie narzędzia Automation na instrumentach. Piszesz scenariusz, w którym ustawiasz ekran w dowolny sposób, a potem robisz zdjęcia. Oto skrypt, którego użyłem dla jednej z moich aplikacji. Oczywiście szczegóły skryptu będą inne dla Twojej aplikacji.
źródło
Dwie opcje dostępne poniżej:
OPCJA 1: używanie UIWindow (wypróbowane i działa idealnie)
OPCJA 2: za pomocą UIView
Ekran siatkówki (zgodnie z odpowiedzią DenNukem)
więcej szczegółów: http://pinkstone.co.uk/how-to-take-a-screeshot-in-ios-programmatically/
źródło
Tylko mały wkład, zrobiłem to za pomocą przycisku, ale naciśnięcie oznacza również, że przycisk jest naciśnięty. Więc najpierw nie podkreślam.
Otrzymałem główną część kodu z: http://pinkstone.co.uk/how-to-take-a-screeshot-in-ios-programmatically/ gdzie użyłem opcji 1, opcja 2 nie działała dla mnie. Dodano korekty dla rozmiarów ekranu Rentina z tego wątku i wyłączenie podświetlenia screenShotButton. Widok, w którym go używam, to ekran StoryBoarded z przyciskami i etykietami oraz z kilkoma UIView dodanymi później za pośrednictwem programu.
źródło
W Swift możesz użyć następującego kodu.
źródło
Swift 4:
źródło