UITableView 第一行在顶栏下被截断

Posted

技术标签:

【中文标题】UITableView 第一行在顶栏下被截断【英文标题】:UITableView first rows are cut-off under top bar 【发布时间】:2013-12-04 06:48:57 【问题描述】:

我有一个UITabBarController 和两个UITableViews,都是在情节提要中创建的。

问题在于,在第二个 tableview 中,表格的前几行位于顶部栏下方,第一个 tableview 不会发生这种情况,即使我更改视图的顺序,第一个也会完美运行,并且第二个会出现问题,所以现在完美运行的那个会出现同样的问题,因为它是标签栏控制器的第二项。

我没有太多代码要显示,因为我没有以编程方式创建表格视图。

【问题讨论】:

我建议您以编程方式创建 tableView,以便您可以更好地控制两个表。您可以为这两个表格设置不同的框架大小并避免此问题。 感谢您的回答...我接受了 user1550961 的回答,禁用“扩展边缘”选项解决了问题 【参考方案1】:

根据您的描述不确定,但我想到了几种可能性:

    在 IB 中检查您的视图控制器属性检查器。寻找 View Controller 下的“Extend Edges”选项,并取消选中“Under Top” Bars”(如果选中)。

    ios7 中,UIScrollView 和所有 自动调整内容插入和偏移的子类,有时不是很好。你 可以尝试在代码或 IB 中禁用它(请参阅链接 如何:iOS 7 -- navigationController is setting the contentInset and ContentOffset of my UIScrollView)

【讨论】:

感谢您的回答,我取消选中“扩展 Egdes”选项,它起作用了!谢谢! 这也适用于我,但只有在 UITabBarNavigationController 上未选中时才能使用 这个有帮助!!【参考方案2】:

对于任何新创建的 iOS >7.0 应用程序,我建议您更深入地了解自动布局。对于我所有的旧 iOS 6 应用,我都是这样解决的:

在你的 UITableViewController 界面中:

  bool _hasStatusBar;
  bool _hasStatusBarHeight;
  UIView *_blendView;

在您的UITableViewController 实现文件中:

-(void)viewWillAppear:(BOOL)animated
  _hasStatusBar = NO;
  _blendView = nil;
  [self.tableView reloadData];


-(void)viewWillDisappear:(BOOL)animated
  _hasStatusBar = NO;
  _blendView = nil;


- (void) viewDidLayoutSubviews 
    // WTF APPLE!?
  if (!_hasStatusBar) 

    int topBarOffset = 20;

    _hasStatusBar = YES;
      // Fix for iOS 7 overlaying status bar
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 

      CGRect viewBounds = self.view.bounds;
      _blendView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, viewBounds.size.width, topBarOffset)];
      [_blendView setBackgroundColor:COLOR_MAIN];
      [_blendView setOpaque:YES];
      [_blendView setAlpha:1.00];
      UIView *whityMacWhite = [[UIView alloc] initWithFrame:CGRectMake(0, 0, viewBounds.size.width, topBarOffset)];
      [whityMacWhite setBackgroundColor:[UIColor whiteColor]];
      [whityMacWhite setOpaque:NO];
      [whityMacWhite setAlpha:0.80];
      [_blendView addSubview:whityMacWhite];
      [self.view.superview addSubview:_blendView];
    
  

【讨论】:

以上是关于UITableView 第一行在顶栏下被截断的主要内容,如果未能解决你的问题,请参考以下文章

我的应用内容在横向模式下被截断

iPhone:标签栏下的 UITableView 滚动

旋转后 UINavigationController 中的 UITableView 在导航栏下

UITableView在导航栏下滚动

在不改变顶栏的情况下切换 UIView

UITableView 和分段控制器在 IOS 11 导航栏下移动