表格视图部分 Swift3 的页脚中的按钮
Posted
技术标签:
【中文标题】表格视图部分 Swift3 的页脚中的按钮【英文标题】:Button in the footer of tableview section Swift3 【发布时间】:2017-03-20 14:06:22 【问题描述】:我的 tableView 部分中有一个页脚。 我尝试在中心添加一个按钮,然后将我的按钮居中。 我没有找到如何使我的按钮居中,我尝试使用 view.center,或者给他所有父视图的宽度,然后使用文本对齐使我的按钮居中。 (我个人更喜欢使用第二种方法。) 其实我的代码就是这个
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
let footerView = UIView()
let labelMore = UIButton()
footerView.addSubview(labelMore)
labelMore.sizeToFit()
labelMore.setTitle(footerText(status: "Test"), for: .normal)
labelMore.backgroundColor = #colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1)
footerView.backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
//labelMore.addTarget(self, action:#selector(footerMore(sender:)), for: .touchUpInside)
return footerView
我得到了,绿色方块实际上是我的按钮,我从代码中删除 labelMore.frame = footerView.frame,因为这不起作用
编辑:如果我的问题不清楚,我希望我的按钮居中。
【问题讨论】:
有什么问题? 你想做什么让按钮位于footerView
的中心?
我想要我的按钮,占据所有蓝色空间(footerView),然后将其居中,感谢您的注意,我将编辑我的问题
【参考方案1】:
您显示的所有代码都没有“居中”按钮,因此它没有居中也就不足为奇了。您根本没有设置labelMore
的frame.origin
,所以它的原点为零——左上角,正如屏幕截图所示。
我从我的代码中删除
labelMore.frame = footerView.frame
是的,那是行不通的。这只是混淆frame
和bounds
的另一种情况。请记住,子视图的frame
与父视图的bounds
相同。因此,您可以将该代码更改为
labelMore.frame = footerView.bounds
但是,这也行不通,因为 footerView
没有界限——你没有给它任何大小!
这里真正的解决方案是使用自动布局定位labelMore
。这样,无论 footerView
最终大小如何,labelMore
都将在其中拥有正确的位置。例如,假设您希望labelMore
的大小与footerView
相同:
let footerView = UIView()
let labelMore = UIButton()
footerView.addSubview(labelMore)
labelMore.topAnchor.constraint(equalTo: footerView.topAnchor).isActive = true
labelMore.bottomAnchor.constraint(equalTo: footerView.bottomAnchor).isActive = true
labelMore.leadingAnchor.constraint(equalTo: footerView.leadingAnchor).isActive = true
labelMore.trailingAnchor.constraint(equalTo: footerView.trailingAnchor).isActive = true
labelMore.translatesAutoresizingMaskIntoConstraints = false
// ... and remove the `sizeToFit` ...
【讨论】:
实际上,当我尝试您的代码并为您的视图提供一些颜色时,让我们说 footerView 为红色,按钮为蓝色。我实际上只看到没有蓝色背景按钮的红色背景。 对不起,我遗漏了一行代码。添加它(见编辑的答案)。 他工作完美,感谢关于框架和边界的解释以上是关于表格视图部分 Swift3 的页脚中的按钮的主要内容,如果未能解决你的问题,请参考以下文章