ios 查找当前项目中自己想要的Window(AVPlayer的Window)

本文介绍了在iOS开发中如何找到并设置AVPlayer使用的UIWindow,包括检查是否为AVPlayer创建的Window、调整Window层级以及监听窗口变化。讲解了WindowLevel的概念,并提供了查找关键Window的不同方法。
摘要由CSDN通过智能技术生成

本文为博主手写总结性文章,如若涉及版权问题,请与博主联系。

- (UIWindow *)AVPlayerWindow {

    UIWindow *AVPlayerWindow = nil;

    NSArray *windows = [[UIApplication sharedApplication] windows];

    for (UIWindow *window in windows) {

        if (!window.isHidden && [NSStringFromClass([window.rootViewController class]) isEqualToString:@"UIViewController"]) {

            AVPlayerWindow = window;

            AVPlayerWindow.windowLevel = UIWindowLevelStatusBar;

            break;

        }

    }

    return AVPlayerWindow;

}

补充一些用到的知识点:

1.   AVPlayer:ios中常用的视频播放器,当视频打开的时候会创建一个新的Window,区别于之前的Window,新创建的Window当关闭视频是会自行销毁。

2.   WindowLevel:每个UIWindow对象都有个windowLevel属性,该属性决定了windows间的位置关系,高等级window悬浮在低等级的上面. 绝大数情况,你都不需要管,因为系统帮你配置好了,配置是normal window level(用于显示应用级别的内容).如果系统级别的内容,比如收到了通知,状态栏等,系统也会自动配置为higher window level.

    UIWindowLevelNormal:默认、最低

    UIWindowLevelStatusBar:中间

    UIWindowLevelAlert:最高

3.   监听window的改变,通过监听下面的通知你可以知道到window的显示和隐藏:

UIWindowDidBecomeVisibleNotification

UIWindowDidBecomeHiddenNotification

UIWindowDidBecomeKeyNotification

UIWindowDidResignKeyNotification

UIWindowDidBecomeVisibleNotification和UIWindowDidBecomeHiddenNotification会在当你使用代码控制window的hide/show时,然而当你应用进入后台时,不会发送通知,因为系统认为window是可见的.

UIWindowDidBecomeKeyNotification和UIWindowDidResignKeyNotification这两个通知帮你开发者确定那个window是key window.key window是指可以接受键盘事件和其他非触摸事件, touch events传递给发送触摸事件的window,而那些和坐标没关系的事件则传递给key window. 同一时间内只有一个key window.

4   贴出四种找window的方法

UIWindow *window = [[[UIApplication sharedApplication] delegate] window];

UIWindow *window = [[UIApplication sharedApplication].delegate window];

UIWindow * window = [[UIApplication sharedApplication].keyWindow ];

UIWindow * window = [UIApplication sharedApplication].windows[0];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敛柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值