寻找视角的中心

时间:2013-11-08 00:39:48

标签: ios uiview uiviewcontroller uinavigationbar

我有一个带有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.height loadingScreen.center 并且他们有相同的COORDINATES!所以,不知道为什么它会降低。任何想法为什么第二个loadingScreen更低,如何解决?谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

Xcode example

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

- (BOOL)automaticallyAdjustsScrollViewInsets
{
    return NO;
}