5

下面是我在 didFinishLaunchingWithOptions 中的应用程序委托的代码

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

CGRect windowFrame = self.window.frame;
UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, windowFrame.size.height-100, windowFrame.size.height, windowFrame.size.height)];
bottomView.backgroundColor = [UIColor redColor];
[self.window addSubview:bottomView];

//    self.viewController.view.frame = CGRectMake(0, 0, windowFrame.size.width, windowFrame.size.height-100);

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

return YES;

我的 ViewController 是 FreeForm,它的高度大约是 245。如您所见,我试图放置一个 100 点高度的底部视图。

我只是想学习这个。

但是视图总是填满整个屏幕。如果我将视图控制器设置为 Windows rootviewcontroller 注释掉,我可以在屏幕上看到我的底部视图。

我做错了什么?请指教。

谢谢。

4

3 回答 3

3

代替

self.window.rootViewController = self.viewController; 

当我编码时

[self.window addSubview:self.viewController.view]; 

给了我预期的结果,它控制了自由形式的大小。

当设置为 rootviewcontroller 时,它会出现,它会填满整个可用屏幕,而不管 XIB 上设置的自由格式大小。

于 2013-02-09T05:55:38.093 回答
2

只写一句话

[self.window bringSubviewToFront: bottomView];

或者

将bottomView添加到窗口,

[[[[UIApplication sharedApplication] delegate] window] addSubview:bottomView];
于 2013-02-09T04:31:03.590 回答
0

我不确定您为什么要这样做,但 IB 中的自由格式设置(至少对于 xib 文件)似乎仅用于布局目的。它实际上不会影响您在视图加载时获得的大小。如果你想让它更短,那么在 ViewController 的 viewDidAppear: 方法中设置它的框架,而不是在应用程序委托中——视图还没有加载到那里,所以现在设置框架还为时过早。

于 2013-02-09T05:19:53.233 回答