不知道为什么UIView被大约10px轻推

时间:2009-06-28 08:43:42

标签: iphone xcode uiview window xib

我创建了一个简单的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正在转向成为一个不同的对象。

5 个答案:

答案 0 :(得分:12)

当以正常方式使用UIViewController(即pushing it on a UINavigationController)时,它会调整其视图的帧。

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

答案 1 :(得分: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];

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

有关
  1. 应该在根控制器中进行定义 - 不确定它是否是错误,但是尝试与所有子视图控制器返回该函数保持一致(通常会导致视图控制器隐藏在状态栏后面)< / LI>
  2. 子视图的wantsFullscreen定义 - 如果可能,设置为NO
  3. 我的应用程序中有两个错误并解决了它们!希望我可以节省你一些时间(我浪费了很多)