我有一个由原型单元组成的UITableView。我想使用Interface Builder将UIButton 放在底部的UITableView 中。
我在UITableView的页脚中添加了UIButton:
我为页脚视图添加了紫色背景,为UITableView添加了绿色背景颜色。在上图中,它显示了页脚底部的按钮。但是,这不等于UITableView的底部。
下面的GIF显示按钮位于单元格下方,但不在UITableView底部。我希望它出现在UITableView的底部 中。不是 下的UITableView。以下GIF显示此问题:
我的问题是:如何使用Interface Builder在 UITableView 的底部中设置UITutton 内部?
这就是我想要实现的目标(来自Apple的ResearchKit):
编辑:UIButton应该在UITableView中。将UIButton放在TableView外面并固定在其下面的建议不能实现我的目标。
答案 0 :(得分:2)
答案 1 :(得分:1)
所以我不得不稍微调整它,但通过做以下事情让它发挥作用:
IB中的观点层面看起来应该是这样的:
现在在视图控制器代码中,您需要执行以下操作:
为键盘偏移值
创建实例varfiles
设置键盘的通知和观察器将显示和 willHide
var keyboardOffset: CGFloat = 0
在keyboardWillShow中,缓存键盘高度值。
notificationCenter.addObserver(self, selector: #selector(keyboardWillShow(_:)), name:NSNotification.Name.UIKeyboardWillShow, object: nil)
notificationCenter.addObserver(self, selector: #selector(keyboardWillHide(_:)), name:NSNotification.Name.UIKeyboardWillHide, object: nil)
在keyboardOffset var上创建didSet方法,并在每次设置时使用该值设置视图的高度
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
keyboardOffset = keyboardSize.height
}
确保在keyboardWillHide
中将偏移设置回0var keyboardOffset: CGFloat = 0 {
didSet {
resizingViewHeight.constant = -keyboardOffset
UIView.animate(withDuration: 0.2) {
self.view.layoutIfNeeded()
}
}
}
每次键盘现在出现时,包含tableview的视图都会缩小,因此可以用它拉出内容,提供你正在寻找的缩小的tableview效果!
答案 2 :(得分:0)
将包含UIButton
的视图添加到UIViewController
所在的UITableView
底部。赋予它附加到超视图的左侧,右侧和底侧的约束,并且可能是固定的高度。
然后将UITableView
的底部约束附加到包含UIButton
的视图顶部。
你应该得到你正在寻找的效果。
注意:对于按钮,您可以在超视图约束中给出居中的Y和X,使其保持居中。
答案 3 :(得分:0)
页脚始终显示在表视图的最后一个单元格之后,因此输出正确。
如果您想要tableview的按钮底部,则在层次结构中的tableview下面添加按钮而不是页脚。但它使你的按钮静止,这意味着你有多少细胞,按钮总是tableView的按钮,但它不像现在这样可滚动。
答案 4 :(得分:0)
我尝试了接受的答案,但无法正常工作。我发现,无论TableView的大小如何,页脚视图始终固定在屏幕底部(就像它是TableView的同级兄弟一样)。我最终遵循了这里建议的方法:https://stackoverflow.com/a/18047772/5778751的基本思想是,您可以通过编程确定TableView的高度,并根据结果来显示TableView内部的页脚或显示同级视图的TableView。