无法更改UIWindow的大小

the*_*end 6 iphone cocoa-touch uiwindow ios

我正在尝试在iPad应用程序的基础上添加一个新窗口,但我无法弄清楚为什么它总是呈现为全屏.我正在使用此代码:

UIWindow *window = [[UIWindow alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];


[window setFrame:CGRectMake(0, 0, 20, 20)];
ArrowController *controller = [[ArrowController alloc]initWithNibName:@"ArrowController" bundle:nil];   

[window setRootViewController:controller];    
[window setHidden:NO];

[controller release];
Run Code Online (Sandbox Code Playgroud)

无论我在框架上放置什么尺寸,我都会看到一个全屏大小的窗口.请指教,谢谢.

Lud*_*dry 12

要更改您添加的另一个UIWindow的框架,您必须使用所需的框架初始化窗口:

self.myNewWindow = [[UIWindow alloc] initWithFrame:CGRectMake(10, 10+20, 300, 440)];
Run Code Online (Sandbox Code Playgroud)

将其属性剪辑设置为活动边界:

[self.myNewWindow setClipsToBounds:YES];
Run Code Online (Sandbox Code Playgroud)

然后在将rootViewController设置为新窗口后,也设置其框架:

self.myNewWindow.rootViewController = self.fooViewController;
[self.myNewWindow makeKeyAndVisible];

self.fooViewController.view.frame = CGRectMake(0, 0, 300, 440);
Run Code Online (Sandbox Code Playgroud)

这适用于iPhone和iPad.


小智 -20

iOS 应用程序只应该有一个 UIWindow 对象。

您可能应该在 viewController 的 UIView 上设置框架,并将其添加为子视图。

  • 这不应该是公认的答案,因为它是错误的。iOS 应用程序可以有多个 UIWindow,应用程序商店中有很多这样的示例。官方文档只是稍微不鼓励它们的使用,因为“通常”你可以通过多个子视图获得你需要的东西。 (21认同)