• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS:创建另一个 UIWindow 作为覆盖的问题(iOS 7 问题?)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:47:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想在所有其他 View (包括键盘)之上创建一个覆盖 View ,并且创建另一个 UIWindow 似乎是执行此操作的方法。看完the Windows section of the View Programming Guide还有一些网上的其他文件,看来我只需要……

  • 使用屏幕边界创建窗口,
  • 将其windowLevel设置为UIWindowLevelStatusBar,
  • userInteractionEnabled 设置为 NO(因此它会忽略触摸),
  • 并通过将其 hidden 属性设置为 NO 使其可见(不使其成为关键窗口,因此它不会接收非触摸事件)。

这是我的应用委托(delegate)中的代码:

self.overlayWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.overlayWindow.backgroundColor = [UIColor clearColor];
self.overlayWindow.windowLevel = UIWindowLevelStatusBar;
self.overlayWindow.userInteractionEnabled = NO;
self.overlayWindow.rootViewController = [[OverlayViewController alloc] initWithNibName:nil bundle:nil];
self.overlayWindow.hidden = NO;

但是,我遇到了一些问题:

  1. [self.overlayWindow.rootViewController preferredStatusBarStyle] 正在设置状态栏文本颜色,而我实际上希望原始窗口的 Root View Controller 执行此操作。
  2. 一个大问题是,额外的窗口以某种方式扰乱了我对软件键盘通知的处理。似乎我仍然收到通知,但在某些情况下我的应用程序响应异常。 (我不会解释这些奇怪的行为是什么,因为它们跑题了。)关键是我根本不应该得到这些奇怪的行为:我只是想在应用程序上绘制一个覆盖层,而应用的行为应该和以前一样。
  3. 我希望 overlayWindow 的旋转与我的原始窗口的旋转相匹配,但它是独立旋转的。例如,UINavigationController 的 swipe-to-go-back 手势锁定了界面方向,但 overlayWindow 在此期间仍然可以旋转。

我应该怎么做才能解决这个问题,这样我才能在应用程序上得到一个无害的覆盖?



Best Answer-推荐答案


我已经完成了与使用窗口非常相似的事情。在我的情况下,我没有使用附加到窗口的 UIViewController,只是需要的 subview ,所以它看起来是正确的。为了正确处理旋转,您可以收听 NSNotification

UIApplicationDidChangeStatusBarOrientationNotification

在方法处理程序中,您可以像调用这样的调用一样获取设备方向

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

然后您可以使用 CGAffineTransformMakeRotation 将窗口内的 View 旋转到正确的方向。从该方法的外观来看,您会认为您会在设备方向动画后收到通知,但是您会在之前收到通知,当您使用变换旋转 View 时,您的旋转将与其他所有内容一起动画(这是假设事情是居中的,如果没有事情更复杂)。如果您想要一个示例 https://github.com/samvermette/SVProgressHUD,SVProgress hud 将是一个很好的学习示例

关于iOS:创建另一个 UIWindow 作为覆盖的问题(iOS 7 问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689847/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap