为什么额外的空间在UITableView的顶部 - 简单

时间:2013-11-30 21:37:45

标签: ios

我正在接受一些iOS编程,并试图将UITableView放入故事板。不幸的是,我试图将内容放在视图的顶部,但它正在放置一些空间。我试图在视图中调整值 - >模式,但这似乎没有任何影响。

我已将背景设为绿色并使用边框颜色来显示问题。我不是一个成熟的iOS开发者,所以我认为这是最简单的解决方案而不是复杂的东西。如何使表格视图的内容与顶部齐平?我见过这个Why is there extra padding at the top of my UITableView with style UITableViewStyleGrouped in iOS7但不确定它是否相关。

thx任何帮助

enter image description here


编辑#1

更新了此表视图属性的更改和屏幕截图

enter image description here

enter image description here

enter image description here

12 个答案:

答案 0 :(得分:61)

是的,其他问题非常相关。 UITableViewStyleGrouped通过插入额外的填充...将每个部分划分为“组”...类似于iOS7之前的版本,但默认情况下是清除而不是彩色,而只是在顶部而不是一直到处。如果您不想默认填充,请使用UITableViewStylePlain

否则,如果您需要保持样式相同,请执行此链接推荐的其他内容并更改内容插入内容:

self.tableView.contentInset = UIEdgeInsetsMake(-36, 0, 0, 0);

或者执行此海报建议的内容并将tableHeaderView的{​​{1}}设置为height,即差不多.-1

0

答案 1 :(得分:58)

通过在Storyboard中选择xib或控制器,转到View Controller的属性检查器。取消选中布局中的调整滚动视图插入。它将解决问题enter image description here

答案 2 :(得分:6)

在Swift中,您只需要将以下属性设置为false。

self.automaticallyAdjustsScrollViewInsets = false

答案 3 :(得分:5)

这对我来说非常容易和完美。 在故事板中选择一个放置UITableView的控制器。

YouStoryboard.storyboard> YouViewController>属性检查器>取消选中 - 调整滚动视图插图。

确保选择UIViewController而不是UITableView。

答案 4 :(得分:4)

每个人都在谈论这个self.automaticallyAdjustsScrollViewInsets选项 然而,这对我来说根本不起作用。对我有用的是将“内容插入”属性设置为Never

screenshot demonstrating where to find the setting

这是一个恼人的问题。

答案 5 :(得分:1)

斯威夫特:

override func viewWillAppear(animated: Bool) {
        self.edgesForExtendedLayout = UIRectEdge.None

       OR

self.moduleListTableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0);

       OR

 self.automaticallyAdjustsScrollViewInsets = false
        }

答案 6 :(得分:1)

试试这个......

self.tableView.contentInset = UIEdgeInsetsMake( 20, 20 , 0, 0)

答案 7 :(得分:1)

在swift 3.0中,我希望能帮到你

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

答案 8 :(得分:1)

这是通过Storyboard轻松修复的方法:

选择表格视图>尺寸检验员>内容插入:从不

答案 9 :(得分:0)

此问题的原因: -

  1. UITableView不喜欢高度为0.0的标题。如果你要做的是拥有一个高度为0的标题,你可以跳到解决方案。
  2. 即使稍后您为标题指定了非0.0高度,UITableView也不希望首先为其指定高度为0.0的标题。
  3. 在ViewDidLoad中: -

    self.edgesForExtendedLayout = UIRectEdge.None
    
    self.automaticallyAdjustsScrollViewInsets = false
    

    不需要这样的东西: -

    self.myTableview.contentInset = UIEdgeInsetsMake(-56, 0, 0, 0)
    

    heightForHeaderInSection委托中: -

    if section == 0
        {
            return 1
        }
        else
        {
            return 40; // your other headers height value
        }
    

    viewForHeaderInSection委托中: -

    if section == 0 
    {  
       // Note CGFloat.min for swift
       // For Objective-c CGFLOAT_MIN 
       let headerView = UIView.init(frame: CGRectMake(0.0, 0.0, self.myShaadiTableview.bounds.size.width, CGFloat.min)) 
       return headerView
    }
    else
    { 
       // Construct your other headers here 
    }
    

答案 10 :(得分:0)

也许您有多个父导航控制器?如果是这种情况,请取消选中其他父导航控制器' "显示导航栏"。

enter image description here

答案 11 :(得分:0)

这对我迅速起作用:

tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNormalMagnitude))