表格视图部分 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】:

您显示的所有代码都没有“居中”按钮,因此它没有居中也就不足为奇了。您根本没有设置labelMoreframe.origin,所以它的原点为零——左上角,正如屏幕截图所示。

我从我的代码中删除 labelMore.frame = footerView.frame

是的,那是行不通的。这只是混淆framebounds 的另一种情况。请记住,子视图的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 的页脚中的按钮的主要内容,如果未能解决你的问题,请参考以下文章

列表视图中的页脚按钮,如何从自定义列表适配器中获取值

在 Gridview 的页脚中访问链接按钮单击事件

如何在 ag-grid 表的页脚中启用或显示总行

在heroku上部署的rails应用程序和html代码出现在我的页脚中

具有共享滚动手势的嵌套 UITableView

为啥将 JavaScript 放在页面的页脚中?