viewForHeaderInSection 对齐错误 (Swift 3)
viewForHeaderInSection alignment wrong (Swift 3)
我不知道我哪里错了。文本始终从左对齐。
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.sizeToFit()
上面一行根据文本长度制作标签的边框。 (您可以尝试更改标签的背景颜色以查看标签的宽度)。删除上面的行,您将获得首选的文本对齐方式。
同样设置label的frame如下:-
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
当您调用 sizeToFit
时,这将 shrink/expand 标签匹配文本的大小,因此该标签内的任何文本对齐方式都已过时。
我想你的意思是titleLabel.adjustsFontSizeToFitWidth = true
;如果(且仅当)文本太大而无法显示时,这将使用较小的字体。
试试这个
let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: Helper.screenWidth, height: sectionHeight))
headerView.addSubview(titleLabel)
titleLabel.center = headerView.center
您的文字在您的标签中居中,但您的标签在您的视图中不居中。
您通过调用 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
}
我不知道我哪里错了。文本始终从左对齐。
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.sizeToFit()
上面一行根据文本长度制作标签的边框。 (您可以尝试更改标签的背景颜色以查看标签的宽度)。删除上面的行,您将获得首选的文本对齐方式。
同样设置label的frame如下:-
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
当您调用 sizeToFit
时,这将 shrink/expand 标签匹配文本的大小,因此该标签内的任何文本对齐方式都已过时。
我想你的意思是titleLabel.adjustsFontSizeToFitWidth = true
;如果(且仅当)文本太大而无法显示时,这将使用较小的字体。
试试这个
let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: Helper.screenWidth, height: sectionHeight))
headerView.addSubview(titleLabel)
titleLabel.center = headerView.center
您的文字在您的标签中居中,但您的标签在您的视图中不居中。
您通过调用 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
}