隐藏在UITableViewController中分组的TableView的第一部分标题 - Swift 3 - Xcode8

时间:2016-12-09 08:21:56

标签: ios uitableview swift3 xcode8

这是我在这里发表的第一篇文章。 我需要提一下,我不是一名程序员,我是一名用户体验设计师,我正在努力使用Xcode Storyboard +为我的同伴Engeneers打造更好的原型。

问题

我正在尝试为我的个人资料视图提供“原生”外观。 现在我的个人资料视图是一个UITableViewController。

我意识到“原生”外观带有应用于TableView的“分组”设置。

以下是我之前版本的比较,而不是“分组”

enter image description here

正如您所看到的,由于标题,分组版本推送了我的TableView。我没有在页眉设置中输入任何文字。然而,这个空间是固定的。{/ p>

我想摆脱那个空间。

我在Stack上发现了这个代码,听起来应该解决我的问题。

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    let headerHeight: CGFloat

    switch section {
    case 0:
        // hide the header
        headerHeight = CGFloat.leastNonzeroMagnitude
    default:
        headerHeight = 21
    }

    return headerHeight
}

我在super.viewDidLoad()中的我的ProfileTableViewController.swift中添加了这个。 但是空间仍然存在,我现在已经没有选择了。

也许问题来自页眉/页脚设置,甚至不是章节标题......甚至不再确定。

5 个答案:

答案 0 :(得分:4)

@Pragnesh提供的最新两个选项对我有用。 我不确定转换tableview是有史以来最好的做法,但它现在可以解决这个问题。

我确信还有一种方法可以隐藏节标题。

我一直在使用这个

self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0)

答案 1 :(得分:2)

试试这个:

在storyboard / xib中:

 1. Click TableView.
 2. Click on Size Inspector on Right side. 
 3. You will see SectionHeight: Header and Footer.
 4. Make both these values 1. 
 5. It will remove the extra spaces.

enter image description here

答案 2 :(得分:1)

您可以在viewDidLoad()中尝试此代码:

1)。在viewDidLoad()中:

self.automaticallyAdjustsScrollViewInsets = false

2)。您可以编写此viewDidLoad():

self.tableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0)

3)。或者你可以这样写:

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

答案 3 :(得分:1)

将1设置为第一个节头的高度。然后我使用contentInset隐藏导航栏下方的高度。给下面 -

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
            return 1.0f;
    return 32.0f;
}

- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return nil;
    } else {
        // return some string here ...
    }
}

- (void) viewDidLoad
{
    [super viewDidLoad];

     self.tableView.contentInset = UIEdgeInsetsMake(-1.0f, 0.0f, 0.0f, 0.0);
}

答案 4 :(得分:0)

其他答案可行,但我宁愿不要乱用硬编码的插图。
@niku解决方案的一种改进可以使用CGFloat.leastNonzeroMagnitude

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
        return CGFloat.leastNonzeroMagnitude
    }
    // return the height for the other sections
}