为什么我以编程方式定义的UIScrollView(使用应用程序框架)总是在20像素的顶部(在navigationBar下面)留下一个空白空间。我怎么能关闭它?
UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
vScrollView.backgroundColor = [UIColor redColor];
我的屏幕看起来像这样:
如何调用应用程序框架大小以避免这种差距?
答案 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中找到了一种方法: