为 UIWindow 获取最顶层视图。最顶层视图可以与设备正确旋转。测试项目包含一个简单的 toast 实现。支持 iOS 7-11。
获取应用程序窗口的最顶层视图
// The application window is [UIApplicationDelegate window].
[TopmostView viewForApplicationWindow]
获取键盘窗口的最顶层视图
[TopmostView viewForKeyboardWindow]
获取覆盖在状态条之上的新窗口的最顶层视图
[TopmostView viewForStatusBarWindow]
获取覆盖在 Alert 弹窗之上的新窗口的最顶层视图
// It is for iOS 7/8, UIAlertView cteate a new window which level = UIWindowLevelAlert.
// For iOS >= 9, UIAlertController does not create a new window.
[TopmostView viewForAlertWindow]
获取指定窗口的最顶层视图
[TopmostView viewForWindow:window]
获得 UIWindow 里最顶层的 view。这个最顶层的 view 可以随着设备正常的旋转。另外测试工程里包含一个简单的 toast 实现。支持 iOS 7-11。
获得应用程序 window 里最顶层的 view:
// 应用程序 window 的值是 [UIApplicationDelegate window]。
[TopmostView viewForApplicationWindow]
获得键盘 window 里最顶层的 view:
[TopmostView viewForKeyboardWindow]
获得一个覆盖在状态条之上的新 window 里最顶层的 view:
[TopmostView viewForStatusBarWindow]
获得一个覆盖在 Alert 弹窗之上的新 window 里最顶层的 view:
// 这是用在 iOS 7/8 上的,UIAlertView 会创建一个 level 为 UIWindowLevelAlert 的 window。
// 在 iOS >= 9 的设备上,UIAlertController 是不会创建新 window 的。
[TopmostView viewForAlertWindow]
获得指定 window 里最顶层的 view:
[TopmostView viewForWindow:window]
实现细节逻辑相关blog:iOS系统的键盘window,iOS系统window的旋转及自定义window的问题