【问题标题】:IOS: Hide/Reload tableView headerIOS:隐藏/重新加载 tableView 标头
【发布时间】:2015-08-24 19:30:05
【问题描述】:

我在故事板中使用自动布局为 tableview(!不是该部分)创建了标题。

我希望能够显示/隐藏它。

我该怎么做?

我试过这段代码:

self.tableView.tableHeaderView.hidden = !flag;

CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = flag? k_HEIGHT_TableViewHeader : 0;
self.tableView.tableHeaderView.frame = frame;

它有效,但它给了我很多自动布局错误。

我也可以将其设置为零。如果是这样,我如何从情节提要中加载标题?

【问题讨论】:

    标签: ios iphone uitableview uiviewcontroller tableview


    【解决方案1】:

    当您决定隐藏/显示时,您是否尝试过使用 [tableview reloadData]?

    【讨论】:

    • 是的,它隐藏/显示它,但如果它隐藏了框架并没有改变,所以我有空的空间而不是我的标题
    • 此时您需要执行代码将您的表格视图移回顶部。这可以通过制作一个 IBOutlet NSLayoutConstraint *topConstraint 并将其连接到您的“顶部空间到 Superview”约束来完成。隐藏时将 topConstraint 更新为 0,显示时更新为 0(如 30 像素)。
    【解决方案2】:

    因为您使用自动布局创建它,而不是更改框架,所以您应该将 tableHeaderView 上的高度约束从情节提要链接到您的类。然后,当您想要折叠它时,设置constraint.constant = 0 并通过设置constraint.constant = k_HEIGHT_TableViewHeader 再次展开它。之后您还需要在视图上调用layoutIfNeeded

    也可以通过将layoutIfNeeded 包装在 UIView 动画块中轻松地为这种更改设置动画

    [UIView animateWithDuration:0.5 animations:^{[self.view layoutIfNeeded];}];
    

    Auto Layout Animation Reference

    【讨论】:

    • 可以,但是不能在storyboard中给tableView的header添加高度约束
    猜你喜欢
    • 2014-05-27
    • 1970-01-01
    • 2013-06-05
    • 2015-09-05
    • 2021-05-28
    • 2014-08-24
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多