UILabel在UICollectionViewCell中的高度错误

时间:2015-03-10 22:40:45

标签: ios8 height uilabel uicollectionviewcell nslayoutconstraint

我在可重用的UICollectionViewCell中遇到了UILabel的问题。

标签可以放在不同位置的UICollectionViewCell框架中。 它可以有不同的字体大小,最多3行(Truncate Tail)。

为了做到这一点,我以编程方式删除约束(可能从另一个出列的单元格继承):

[self.lblPadName removeConstraints:self.lblPadName.constraints];
for (NSLayoutConstraint *constraint in self.contentView.constraints) {
    if (constraint.firstItem == self.lblPadName || constraint.secondItem == self.lblPadName) {
        [self.contentView removeConstraint:constraint];
    }
 }

我以编程方式在contentView中添加中心对齐,距离底部的距离,垂直和水平约束使用优先级为500的垂直约束(内容拥抱优先级垂直为1000,内容压缩优先级垂直为1000)。 我在这里如何添加垂直和水平约束。

[self.contentView addConstraint:[NSLayoutConstraint
                                         constraintWithItem:self.lblPadName
                                         attribute:NSLayoutAttributeWidth
                                         relatedBy:NSLayoutRelationEqual
                                         toItem:self.contentView
                                         attribute:NSLayoutAttributeWidth
                                         multiplier:multiplier //0.92f
                                         constant:0.0]];

NSArray *lblPadName_constraints_Height = [NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[%@(%@@500)]", kTitleViewKey, kTitleKeyHeight]                                                                                 options:0                                                          metrics:self.metrics                                                                                views:self.viewsDictionary];

[self.lblPadName addConstraints:lblPadName_constraints_Height];

在故事板中,我还设置了标签的首选宽度宽度及其最大行数。

每个单元格由句柄用户提供,可以用来调整单元格的大小(UICollectionView使用流程布局)。 collectionView的数据源由NSFRC提供,该模块具有一个委托,可在模型更新时重新加载更改的项目。

在cellForRowAtIndex中调用出列单元格的设置方法,因为现在没有问题:文本正确地在两行上。

当我尝试调整单元格大小并且系统在CoreData上保存新大小时,出现了令人沮丧的问题。 NSFRC调用其委托,UICollectionView重新加载其数据,但UILabel现在具有作为约束传递的高度,并且文本被强制在一行中。 内容拥抱优先级垂直和内容压缩阻力优先级似乎不会影响标签的高度。

我正在使用iOS8。

如何使用约束,拥抱优先级垂直和内容压缩阻力优先级使UILabel绑定完全适合内部文本?

0 个答案:

没有答案