展开和收缩视图中相邻的 UI 个对象

Expanding & Contracting adjacent UI objects within a view

我有一个 ViewController 分为两部分。

最上面是一个UIWebView 最下面是一个UITableView

有时,UITableView 不需要任何内容​​。所以我想做的是将 UIWebView 扩展到 UITableView 已放弃的空 space 中。

我启用了具有以下约束的自动布局: UIWebView 固定在 ViewController 的顶部,UIWebView 的底部固定在 UITableView

的顶部

UITableView 固定在底部,UITableView 的顶部固定在 UIWebView 的底部。

当我将 UITableView 的隐藏 属性 设置为 YES 时,它成功隐藏了 UITableView,但在原来的位置留下了空白,没有展开 UIVWebView。

你有什么建议?

谢谢

[编辑]

以下代码将 tableView 下推,但在其后方留下空隙。

        CGRect newFrame = tableView.frame;
        newFrame.origin.y += 130;

        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView setAnimationDelegate:self];

        tableView.frame = newFrame;

        [UIView commitAnimations];

我不会"pull"上面的UIWebView,它也恰好隐藏了下方的导航栏

除了-
之外,保持与您给定的约束相同 不要隐藏 UITableView ,而是将其从超级视图中删除并将 UIWebView 的底部固定到具有低优先级约束的底部,这样当您删除 UITableview 时,此低优先级约束将起作用并且它将扩展您的 UIWebView。

隐藏视图不会更改其大小或约束,因此您得到的结果是预料之中的。您可能应该对 table 视图设置高度限制,并为其创建一个 IBOutlet。当table中没有内容时,修改constraint的常量属性使其为0。

self.tableHeightConstraint.constant = 0;

当有内容时,您可以计算 table 视图所需的高度,并将常量设置为该值,或者您不想超过的某个最大值。