我有UILabel
var cellTitle = UILabel()
我有一个cellForItemAtIndexPath
方法,我在其中声明一个带有标识符的单元格,并为我创建的名为cellTitle
的标签添加约束:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as UICollectionViewCell
cellTitle = UILabel(frame: CGRectMake(0, 0, cell.bounds.size.width, 160))
cellTitle.numberOfLines = 3
cell.contentView.addSubview(cellTitle)
cell.addConstraints([
NSLayoutConstraint(item: cell, attribute: .CenterX, relatedBy: .Equal, toItem: cellTitle, attribute: .CenterX, multiplier: 1.0, constant: 0.0),
NSLayoutConstraint(item: cell, attribute: .CenterY, relatedBy: .Equal, toItem: cellTitle, attribute: .CenterY, multiplier: 1.0, constant: 0.0)
])
}
运行模拟器时出现此错误:
以下列表中的至少一个约束可能是您不想要的约束。试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它。 (注意:如果您看到您不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints) (
"<NSLayoutConstraint:0x7baaac40 UICollectionViewCell:0x7b981570.centerY == UILabel:0x7baa3dd0'Towed by smaller boats, c...'.centerY>",
"<NSAutoresizingMaskLayoutConstraint:0x7baa5c70 h=--& v=--& UILabel:0x7baa3dd0'Towed by smaller boats, c...'.midY == + 80>",
"<NSLayoutConstraint:0x7baa5d50 'UIView-Encapsulated-Layout-Height' V:[UICollectionViewCell:0x7b981570(210)]>",
"<NSAutoresizingMaskLayoutConstraint:0x7bab1110 h=--- v=--- 'UIView-Encapsulated-Layout-Top' V:[UICollectionViewCell:0x7b981570]-(0)-|>"
)
将尝试通过违反约束来恢复
在我使用addConstraints
方法的部分,我显然试图将标签置于单元格中心。由于某种原因,标签没有成为细胞的中心:
我该怎么做才能解决这个问题?我感谢任何支持。
答案 0 :(得分:2)
确保标签中的文字与中心对齐。虽然标签本身居中,但它似乎与左侧对齐。
cellLabel.textAlignment = NSTextAlignmentCenter;
在swift中它会是:
cellLabel.textAlignment = NSTextAlignment.Center
或者只是
cellLabel.textAlignment = .center