当一个带有GameKit的iPhone应用程序启动,并且该设备已经登录到GameCenter时,屏幕顶部会显示一条小消息,上面写着“欢迎回%用户名!”。
我发现以下内容:该消息显示在其自己的UIWindow
中,最终将消息拉开并释放自身。当消息在屏幕上时,您可以注销以下内容:
all windows: (
"<UIWindow: 0x31fc70; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x31fe60>>",
"<UIWindow: 0x3874c0; frame = (0 0; 320 480); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x387590>>"
)
我需要在一般情况下区分两个窗口 - 我需要一些-(UIWindow *)topNormalWindow
函数的行,它将返回最顶层的窗口,它不是A)警报或B)游戏中心信息。我已经有一个 - (UIWindow *)topNonAlertWindow,它确定不是警报的顶部窗口,但游戏包消息不是,但也不是(为了我的目的)一个普通的窗口。
此外,autoresize = RM+BM;
是什么意思?
答案 0 :(得分:1)
我只是通过检查窗口是否有GKGameEventView
作为子视图来解决这个问题。
答案 1 :(得分:0)
我一直在使用Game Center并添加notification system for achievements。我得到这样的顶窗:
[[UIApplication sharedApplication] keyWindow]
似乎与警报或游戏中心身份验证窗口不冲突。实际上,我的通知会在该窗口下添加,所以我认为其中一个位于您可以访问的任何内容之上的另一层。
答案 2 :(得分:0)
关于你的上一个问题:
autoresize = RM + BM是什么?意思?
RM + BM分别是UIViewAutoresizing
个面具,UIViewAutoresizingFlexibleRightMargin
和UIViewAutoresizingFlexibleBottomMargin
的简写。如果在Interface Builder中选择UI控件并转到尺寸检查器,则自动调整大小的图形会显示红色的“I-Beams”,其中控件将锚定到其边界视图。如果Autoresizing = RM+BM
,则表示您应该看到顶部和左侧锚定梁(I-Beams)为红色,但右侧和底部锚定光束变暗。这实际上意味着右边距和下边距是灵活的,布局管理器可以在渲染视图时自由调整它们。