【问题标题】:UITableView content offset -64pt issueUITableView 内容偏移 -64pt 问题
【发布时间】:2015-04-01 14:22:17
【问题描述】:

我正在调试表格视图,并且在我的 -viewDidLoad 方法中我有:

<UITableView: 0x7b394600; frame = (0 0; 1024 768); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7983d2f0>; layer = <CALayer: 0x79836ca0>; contentOffset: {0, 0}>

但是当我在-viewDidAppear 方法中检查框架和内容偏移时:

<UITableView: 0x7ab79c00; frame = (0 0; 1024 768); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7998f700>; layer = <CALayer: 0x7998f560>; contentOffset: {0, -64}>

我不知道 table 如何获得 -64 的偏移量。

视图确实加载了一系列方法,然后视图确实出现了,但内容偏移对我来说神奇地改变了。

可能是什么原因?

这是我的 viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];

    _theTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

    _theTableView.dataSource = self;
    _theTableView.delegate = self;

    [self.view addSubview:_theTableView];

    _theTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    self.title = @"File Manager";
}

我有导航栏,但奇怪的是我看到我的桌子应该没有移动。所以看起来很完美,我看到了顶部单元格,当我滚动到底部时,我看到了最后一个单元格。甚至指示器对我说内容偏移量为 0。如果我强制设置内容偏移量 {0, 0},那么似乎第一个单元格位于导航栏下方,垂直指示器不是从顶部开始,而是有一些大约 64 pt 的填充,但这很奇怪.

我想这是因为状态栏和导航栏。但是,如果硬编码创建我的偏移量和框架,它对我没有帮助。好像系统会自动形成我=)

【问题讨论】:

  • 你在使用自动布局吗?如果是,那么您可以添加 TopSpacetoSuperview 的约束,然后检查
  • @parvind 我也使用过布局,但似乎仍然有那些 -64 pt by y。事实上,我只是在日志中看到它,视觉上一切看起来都很好。但是当我尝试滚动时,我需要比较我的内容偏移量接近 0,但内容偏移量的初始点为 -64,然后我应该根据 -64 pt 而不是 0 比较我的东西
  • 请注意:本文顶部的两个日志是两个不同的UITableViews——地址不同!
  • @RileyAvron,天哪,是的,你是对的)我只是测试了几次,似乎复制了前一个。但无论如何,对于同一个实例,我有不同的偏移量。

标签: ios objective-c uitableview


【解决方案1】:

这是默认行为,请查看automaticallyAdjustsScrollViewInsets

默认值为YES,允许视图控制器调整它的 滚动视图插入以响应屏幕区域所消耗的 状态栏、导航栏和工具栏或标签栏。如果你设置为 NO 想要自己管理滚动视图插图调整,例如何时 视图层次结构中有多个滚动视图。

…以及iOS 7 UI Transition Guide中的其他相关内容。

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多