在tableview部分Swift3的页脚中按钮

时间:2017-03-20 14:06:22

标签: ios swift uitableview swift3 uibutton

我在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中删除,因为它不起作用The green square is my button

编辑:如果我的问题不明确,我想把我的按钮放在中心位置。

1 个答案:

答案 0 :(得分:1)

您所显示的代码都没有“居中”按钮,因此它没有居中也就不足为奇了。您根本不设置frame.origin的{​​{1}},因此其原点为零 - 左上角,完全如屏幕截图所示。

  

我从代码labelMore

中删除

是的,那是永远无法奏效的。这只是混淆labelMore.frame = footerView.frameframe的另一个案例。请记住,子视图的bounds是根据超级视图的frame。所以你要把代码改为

bounds

然而,由于labelMore.frame = footerView.bounds 没有界限,因此无法正常工作 - 你没有给它任何大小!

这里的真实解决方案是使用autolayout定位footerView。这样,无论labelMore如何最终确定大小,footerView都会在其中拥有正确的位置。例如,假设您希望labelMorelabelMore的大小相同:

footerView