应用框架在顶部留下空白行

时间:2010-05-12 07:47:22

标签: iphone objective-c

为什么我以编程方式定义的UIScrollView(使用应用程序框架)总是在20像素的顶部(在navigationBar下面)留下一个空白空间。我怎么能关闭它?

UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
vScrollView.backgroundColor = [UIColor redColor];

我的屏幕看起来像这样:

  • 状态栏
  • - 导航栏
  • ---神秘的差距(10px?)
  • ----我的Scrollviewcontent(红色背景色)

如何调用应用程序框架大小以避免这种差距?

5 个答案:

答案 0 :(得分:4)

我发现我使用错误的框架坐标“applicationFrame”。将其更改为边界时,一切正常。

UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

答案 1 :(得分:1)

UIScreen-applicationFrame是全屏矩形,状态栏(时钟)已删除。由于滚动视图位于导航控制器的视图区域内,因此需要在内部视图的坐标空间中使用坐标。

即使使用UIScreen-bounds也没有给出相应的结果,因为该rect将是屏幕的完整大小,包括导航栏应占用的空间。使用-bounds,你会发现你的UIScrollView实际上在屏幕底部运行了64个像素。

假设您正在UINavigationController的-loadView方法中创建滚动视图,这样的事情应该有效:

- (void)loadView {
  [super loadView];
  UIScrollView *sv = [[UIScrollView alloc] initWithFrame:self.view.bounds];
  [self.view addSubview:sv];
  [sv release];
}

答案 2 :(得分:0)

您的应用程序在info.plist文件中告诉您使用状态栏的内容是什么?是启用还是禁用?如果我理解正确,你会看状态栏的20像素。

答案 3 :(得分:0)

您是否在应用代理中隐藏了状态栏?

- (void) applicationDidFinishLaunching:(UIApplication *)application {
    [application setStatusBarHidden:YES];
    ...
}

答案 4 :(得分:0)

我遇到了以编程方式创建的UIScrollView的类似问题。我需要滚动视图内容以显示下面的状态栏从x-0&的y 0。它一直在我将ViewController嵌入导航控制器中。所有屏幕都隐藏了导航栏。但随后UIScrollView拥有20像素的神秘顶部空白区域。尝试了一切,但遵循一行代码为我工作。

self.automaticallyAdjustsScrollViewInsets = NO;

在我刚创建UIScrollView的上面的viewDidLoad方法中添加了上面的内容。希望这有助于像我这样的人。

修改

在Interface Builder中找到了一种方法:

  • 选择包含UIScrollView的视图控制器。
  • 打开属性检查器。
  • 取消选中“调整滚动视图插图”。在“查看控制器”部分下。