更新 UITableView 内的 UIView 帧大小 - swift

Update UIView frame size inside a UITableView - swift

我在 UITableView 中有一个 UIView,就像这样

问题是当我尝试以编程方式调整 UIView 的高度时,UITableView 中的现有单元格没有向上移动
我试过更新 UITableview size ,

UITableviewwrapperview 

我一直在尝试更新

TableView.contentInset

TableView.contentOffset

大小,删除自动布局和自动布局,但结果相同。

这是我的代码:

@IBAction func SwitchChanged(sender: UISwitch) {

        if sender.on {
            self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height + 275


            var  Frame = self.TableView.tableHeaderView!.frame
            Frame.size.height = self.ViewBOX.frame.size.height;
            TableView.tableHeaderView?.frame = Frame



        } else {
           self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height - 275


            var  Frame = self.TableView.tableHeaderView!.frame
            Frame.size.height = self.ViewBOX.frame.size.height;
            TableView.tableHeaderView?.frame = Frame

        }

    }

这是结果图片

1 :

2:更新后

谁能帮我解释一下我漏掉的部分。

谢谢

每次更改 header 视图框架时,您都需要 re-assign 在 table header 中查看。

YourView.frame =  Frame
TableView.tableHeaderView = YourView

并删除:

TableView.tableHeaderView?.frame = Frame

谢谢

如果您想以一种好的方式更改它,您的代码应该如下所示。

@IBAction func SwitchChanged(sender: UISwitch) {
    UIView.animateWithDuration(0.3, animations: {
        if sender.on {
            self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height + 275
        } else {
           self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height - 275
        }
        TableView.tableHeaderView = self.ViewBOX
    }, completion: {
    })
}