10

我创建了一个简单的 iPhone 应用程序,它有两个 .xib 文件。在应用程序的应用程序委托完成启动我通过调用显示第一个 .xib 文件:

[window addSubview:myView];

我在 IBAction 上为 UIButton 执行相同操作以将视图更改为 myView2。

我发现当我运行应用程序时,两个视图都有一个大约 10 像素的白条。我还注意到按钮偏移了 10 个像素(大约)。所以我得到的印象是视图是从屏幕外 10 像素处显示出来的,并且很短。

知道为什么会发生这种情况,如何修复它,或者如何进一步调试正在发生的事情?我检查了我的 .xib 文件,它们占用了设备的整个高度(即没有白条),所以这看起来是 XCode 内部的一个问题。

编辑:我已经缩小了问题的范围。我正在使用两种方法来加载子视图。当我在里面加载第一个视图时,applicationDidFinishLaunching一切都很好。window但是,如果我用方法替换这两条消息[self originalView],那么一切都会变得有点混乱。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    //[self originalView];  <- I want to use this instead of the following two lines

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

}

-(void)endView{
    endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil];
    [window removeFromSuperview];
    [window addSubview:endV.view];  
}
-(void)originalView{
    viewController = [[MyAppViewController alloc] init];
    [window removeFromSuperview];
    [window addSubview:viewController.view];

}

据我所见,我总是调用相同的代码行,无论它是在内部applicationDidFinishLaunching还是内部,[self originalView]但似乎window变成了一个不同的对象。

4

5 回答 5

12

当以正常方式使用 UIViewController 时(即将它推到 UINavigationController 上),它会调整其视图的框架。

由于您是手动添加子视图,因此您必须自己调整框架。原点在右上角(在状态栏的顶部)。您想将视图向下移动 20 像素。

于 2009-06-28T14:30:22.423 回答
5

这是我的解决方案:

// adjust the frame of subview which is going to be add
self.navController.view.frame = CGRectMake(0, 0, 320, 460);
[self.view addSubView:self.navController.view];

现在对我来说很好用,祝你好运~:)

于 2011-01-05T09:11:09.343 回答
2

在界面生成器中,您可以添加将以编程方式显示的模拟界面元素(例如状态栏或导航栏)。在您的检查器中,选择您的视图,然后转到“属性”选项卡。在这里您可以模拟状态栏、顶栏或底栏。

于 2009-06-29T20:56:45.760 回答
1

看起来你UIViewController在错误的地方调用了 pushVC。我有同样的问题。它是通过[self.navigationController pushViewController: animated:]从之前的层次结构中移动viewDidLoad来解决的。viewDidAppear:UIViewController

于 2012-11-14T10:12:22.987 回答
1

每当出现奇怪的间隙,或者视图部分隐藏在状态栏后面时,它都与

  1. 根控制器中的 shouldAutorotate 定义 - 不确定它是否是错误,但尝试与所有子视图控制器的该函数的返回保持一致(通常导致视图控制器隐藏在状态栏后面)
  2. 子视图的 WantsFullscreen 定义 - 如果可能,设置为 NO

我的应用程序中有两个错误并解决了它们!希望我可以为您节省一些时间(我浪费了很多时间)

于 2013-06-18T09:37:39.820 回答