【问题标题】:viewForHeaderInSection alignment wrong (Swift 3)viewForHeaderInSection 对齐错误(Swift 3)
【发布时间】:2018-01-16 09:15:19
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过了吗 titleLabel.textAlignment = NSTextAlignmentCenter; ?
  • 如果你仔细观察你可以看到它
  • 如果我仔细看,我会在 NSTextAlignment.center 中看到一个点

标签: ios swift uitableview swift3


【解决方案1】:

试试这个

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

 headerView.addSubview(titleLabel)

 titleLabel.center = headerView.center

【讨论】:

    【解决方案2】:
        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
    

    【讨论】:

      【解决方案3】:

      当您调用sizeToFit 时,这将缩小/扩展标签以匹配文本的大小,因此该标签内的任何文本对齐方式都已过时。

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

      【讨论】:

        【解决方案4】:

        您的文本在您的标签中居中,但您的标签不在您的视图中居中。 您通过调用 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
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-22
          • 2017-03-16
          • 2017-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多