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

mac*_*_55 10 iphone xcode window xib uiview

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

[window addSubview:myView];
Run Code Online (Sandbox Code Playgroud)

我在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];

}
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*uhe 12

当以正常方式使用UIViewController(即在UINavigationController上推送它)时,它会调整其视图的帧.

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


fir*_*oke 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];
Run Code Online (Sandbox Code Playgroud)

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