viewForHeaderInSection对齐错误(Swift 3)

时间:2018-01-16 09:15:19

标签: ios swift uitableview swift3

我不知道我错在哪里。文本始终从左侧对齐。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let sectionHeight:CGFloat = 40
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: Helper.screenWidth, height: sectionHeight))
        headerView.backgroundColor = UIColor.init(fromHex: "F7F7F7")
        headerView.layer.borderColor = UIColor.init(fromHex: "F7F7F7").cgColor
        let titleLabel = UILabel()
        titleLabel.font = UIFont(name: "HelveticaNeue", size: 15)
        titleLabel.textColor = UIColor.darkGray
        titleLabel.text = "Dummy test Dummy test"
        titleLabel.textAlignment = NSTextAlignment.center
        titleLabel.sizeToFit()
        var frame = titleLabel.frame
        frame.origin.x = 15
        frame.origin.y = sectionHeight - frame.size.height - 7
        titleLabel.frame = frame
        headerView.addSubview(titleLabel)

        return headerView

enter image description here

PS:screenWidth = UIScreen.main.bounds.size.width

4 个答案:

答案 0 :(得分:2)

试试这个

 let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: Helper.screenWidth, height: sectionHeight))

 headerView.addSubview(titleLabel)

 titleLabel.center = headerView.center

答案 1 :(得分:1)

    titleLabel.sizeToFit()

上面的行根据文本长度制作标签框。 (您可以尝试更改标签的背景颜色以查看标签的宽度)。删除上面的行,您将获得首选的文本对齐方式。

还将标签框架设置如下: -

var frame = CGRect(x: 0, y: 0, width: Helper.screenWidth, height: headerView.frame.size.height)
frame.origin.x = 15
frame.origin.y = sectionHeight - frame.size.height - 7
titleLabel.frame = frame

答案 2 :(得分:1)

当您致电sizeToFit时,这会缩小/展开标签以匹配文字的大小,因此此标签内的任何文字对齐都已过时。

我认为你的意思是titleLabel.adjustsFontSizeToFitWidth = true;如果(并且如果)文本太大而无法显示,现在将使用较小的字体。

答案 3 :(得分:0)

您的文字位于标签的中心位置,但您的标签并未在视图中居中。 您通过调用titleLabel.sizeToFit()来调整标签大小以适合您的文字。

尝试:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let sectionHeight:CGFloat = 40
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: Helper.screenWidth, height: sectionHeight))
        headerView.backgroundColor = UIColor.init(fromHex: "F7F7F7")
        headerView.layer.borderColor = UIColor.init(fromHex: "F7F7F7").cgColor
        let titleLabel = UILabel()
        titleLabel.font = UIFont(name: "HelveticaNeue", size: 15)
        titleLabel.textColor = UIColor.darkGray
        titleLabel.text = "Dummy test Dummy test"
        titleLabel.textAlignment = NSTextAlignment.center
        titleLabel.sizeToFit()

        titleLabel.frame = CGRect(x: 15.0, y: sectionHeight - frame.size.height - 7, width: headerView.size.width - 15.0*2.0, height: titleLabel.size.height)

        headerView.addSubview(titleLabel)

        return headerView
}