저는 iPad Pro (슬라이드 오버가 아닌 나란히있는 응용 프로그램을 지원함)에서이 작업을 상당히 쉽게 수행 할 수있었습니다.
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
}
}
최종 결과는보기 전체 화면과 다른 앱으로 화면을 공유 인 경우 "거짓"인 경우 "true"를 인쇄하는 것입니다, 이것은 표시 될 때마다 아무것도 실행 : 여기에 코드입니다 숨겨 지거나 크기가 조정됩니다.
은 여기, 그 결과를 보여주는 간단한 비디오를 만들어 :
이
https://www.dropbox.com/s/g8pqboj9jjhnlca/FullScreenOrNotTest.mov?dl=0
문제는 만 슬라이드를 오버 지원하는 구형 장치입니다. 이것으로 앱의 크기가 더 이상 조정되지 않습니다. 대신, 그냥 적극적으로 사임하고 다른 애플 리케이션이 활성화되고있다.
이 경우 AppDelegate
에 로직을 넣어 applicationWillResignActive
및 applicationDidBecomeActive
을 찾습니다. 슬라이드 오버하면 applicationWillResignActive
이 표시되지만 applicationDidEnterBackground
은 표시되지 않습니다.
가능성으로 보일 수도 있지만 슬라이드 오버와 화면 맨 위에서 아래로 미끄러지는 알림을 구분할 수 없습니다. 이러한 이유로 이상적인 것은 아니지만 애플리케이션 라이프 사이클을 모니터링하는 것이 최선의 방법 일 수 있습니다.
누군가가 투표를 마치고 "너무 광범위하다"라는 이유로이 질문에 투표했습니다. 질문에 대한 답변을 제안하지 않고 어떻게 자세하게 설명 할 수 있는지 이해할 수 없습니다. 질문에 대한 더 많은 정보가 필요하다고 생각되면 가까운 투표 결과 대신 의견을 말하십시오. –
업데이트는 내가 이것을 해결할 무언가를 찾으려고 많은 시간을 보냈다는 것을 알았습니다. 그러나 볼 수있는 한 멀리있는 다른 앱이 실행 중인지 확인하는 공개 방법은 없습니다. –
사용자가 응용 프로그램 위로 슬라이드를 추가하면 applicationWillResignActive가 호출됩니다. 어쩌면 여기에있는 정보 (https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13)에서 나만의 솔루션을 만들 수 있습니다. -SW1 – Maurice