Udało mi się zrobić to dość łatwo na iPadzie Pro (który obsługuje aplikacje "side-by-side", a nie tylko slajdy). Oto kod:
class ViewController: UIViewController {
override func viewWillLayoutSubviews() {
isThisAppFullScreen()
}
@discardableResult func isThisAppFullScreen() -> Bool {
let isFullScreen = UIApplication.shared.keyWindow?.frame == UIScreen.main.bounds
print("\(#function) - \(isFullScreen)")
return isFullScreen
}
}
Końcowym rezultatem jest to, że będzie to wydrukować „true”, jeśli widok jest pełny ekran i „false”, jeśli jest to dzielenie ekranu z innej aplikacji, a to jest wykonywane każdego coś godzinie jest wyświetlane , ukryte lub przeskalowane.
Zrobiłem prosty film pokazujący wynik tutaj:
https://www.dropbox.com/s/g8pqboj9jjhnlca/FullScreenOrNotTest.mov?dl=0
Problemem jest więc starsze urządzenia, które obsługują wyłącznie slide-over. Dzięki temu Twoja aplikacja nie jest już zmieniana. Zamiast tego po prostu rezygnuje z aktywnego używania, a druga aplikacja staje się aktywna.
W tym przypadku wszystko, co możesz zrobić, to umieścić logikę w AppDelegate
, aby wyszukać applicationWillResignActive
i applicationDidBecomeActive
. Po przesunięciu otrzymasz applicationWillResignActive
, ale nie applicationDidEnterBackground
.
Możesz to zobaczyć jako możliwość, ale nie możesz rozróżnić między przesuwaniem a widokiem powiadomień z przesuwania w dół od górnej części ekranu. Z tego powodu nie jest idealny, ale monitorowanie cyklu życia aplikacji jest prawdopodobnie najlepszym rozwiązaniem.
Ktoś z nich głosował i głosował na to pytanie, aby zostać zamkniętym za bycie "zbyt szerokim" - nie rozumiem, jak można uzyskać bardziej szczegółowe informacje bez proponowania odpowiedzi na to pytanie. Jeśli uważasz, że potrzebujesz więcej informacji o pytaniu, skomentuj zamiast głosować na zakończenie. –
Aktualizacja polega na tym, że spędziłem sporo czasu próbując znaleźć coś, co mogłoby rozwiązać ten problem - ale nie ma żadnej publicznej metody sprawdzania, czy inna aplikacja działa tak daleko jak widzę. –
Podaje w dokumentacji, że aplikacjaWillResignActive zostanie wywołana, gdy użytkownik doda slajd do aplikacji. Być może możesz zbudować własne rozwiązanie na podstawie informacji znalezionych tutaj: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13 -SW1 – Maurice