我有一个带有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更低,如何解决?谢谢!
答案 0 :(得分:1)
你提到一个屏幕显示UINavigationBar而另一个屏幕没有显示。当您显示导航栏时,它会偏移视图的其余部分 - 在这种情况下,将其向下移动。
有两种快速修复方法。您可以通过UINavigationBar的大小调整中心点(65分 - 除非它是自定义UINavigationBar并且您已更改其大小),或者您可以在属性检查器中将“调整滚动视图插入”值设置为false。
后者可能是最简单的,也是最值得推荐的。但请注意,UITableView的顶部现在位于UINavigationBar下面。
我的最后一点是,如果您想以编程方式执行,而不是在UITableView的委托中,您可以调用
- (BOOL)automaticallyAdjustsScrollViewInsets
{
return NO;
}