【发布时间】:2019-01-29 06:41:01
【问题描述】:
背景
我有一个带有单个单元格的 UITableView。单元格内是UILabel。名为PickerTableViewCell 的单元格从xib 获取其UI 并将其添加到其子视图中。这样做是因为这个 xib 被许多不同的自定义单元格使用。
问题
当这个单元格被表格视图出列时,它的宽度似乎超出了右侧表格视图的宽度。
这是带有UILabel 在单元格中居中的xib,然后是它在设备上的显示方式。注意标签在设备上是如何偏离中心的:
当我将标签移动到单元格的最右侧 (label.trailing = pickerCell.trailing + 0) 时,它会从右侧消失。下面是它在 xib 中的外观以及它在设备上的外观:
当我将UILabel 对齐到单元格的左侧 (label.leading = pickerCell.leading + 0) 时,它正确地对齐到设备的左侧。
这是PickerTableViewCell 加载 xib 的方式:
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// load the xib to associate with
let nib = Bundle.main.loadNibNamed("PickerTableViewCell", owner: nil, options: nil)
if let view = nib?.first as? UIView{
self.addSubview(view)
}
// ...
}
这是 tableview 注册单元格的方式:
self.tableView.register(PickerTableViewCell.self, forCellReuseIdentifier: "pickerCell")
最后是它的出队方式:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "pickerCell") as! PickerTableViewCell
return cell
}
谁能帮助理解发生了什么?为什么我的单元格似乎超出了表格视图的宽度?
【问题讨论】:
-
使用标签约束:top、bottom、leading、trailing = 0 with superview and do
myLabel.textAlignment = .center
标签: ios swift xcode autolayout interface-builder