更新 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: {
})
}
我在 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: {
})
}