0

我有一个带有 2 个 ViewControllers 的 iphone 应用程序。两个屏幕(视图控制器)都显示加载屏幕。我以编程方式创建加载屏幕:

 UIView *loadingScreen = [[UIView alloc] initWithFrame:CGRectMake(100,200,144,144)];
 loadingScreen.center = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
     //{.. Other customizations to loading screen
     //   ..}
 [self.view addSubview:loadingScreen];

出于某种原因,第二个视图控制器的 loadingScreen 显着降低,并且不在屏幕中心。第一个视图控制器完美运行,并且像我想要的那样处于死点。

第二个 viewcontroller 是 UITableView,它显示 uinavigationbar,而第一个 viewcontroller 不显示 uinavigationbar。另外,我为我的应用程序使用故事板。

我在这两个实例中都输出到 NSLog self.view.frame.size.heightloadingScreen.center并且它们具有相同的坐标!所以,不知道为什么它显示得更低。任何想法为什么第二个 loadingScreen 较低以及如何解决?谢谢!

4

1 回答 1

1

您提到一个屏幕显示 UINavigationBar 而另一个不显示。当您显示导航栏时,它会偏移您的视图的其余部分 - 在这种情况下,通过将其向下移动。

有两个快速修复。您可以将中心点向上调整 UINavigationBar 的大小(65 pts - 除非它是自定义 UINavigationBar 并且您已更改其大小),也可以在属性检查器中将“调整滚动视图插图”值设置为 false。

后者可能是最简单的,也是最推荐的。但请注意,您的 UITableView 的顶部现在将位于 UINavigationBar 下方。

Xcode 示例

我的最后一点是,如果您想以编程方式执行此操作,而不是在 UITableView 的委托中,您可以调用

- (BOOL)automaticallyAdjustsScrollViewInsets
{
    return NO;
}
于 2013-11-08T01:35:08.777 回答