UITableViewCell约束未更新

时间:2017-01-31 13:30:20

标签: ios objective-c uitableview constraints ios-autolayout

我的自定义UITableViewCell内有UITextViewUICollectionViewUITableView。它们之间有10个像素的空间。在某些情况下,我只有UITextView,有时只有集合视图等。

当没有文本时 - 我必须将UICollection视图向上移动10 px。如果我没有文本,那么tableView和collectionView应该是零高度。

- (void)configureMiddleWrapperState
{
    self.middleWrapperHasNote = self.noteTextView.text.length > 0;
    self.noteTextViewTopConstraint.constant = self.middleWrapperHasNote ? 7.f : 0.f;
    self.staffWrapperTopConstraint.constant = self.middleWrapperHasStaff ? 7.f : 0.f;
    self.tagsWrapperTopConstraint.constant = self.middleWrapperHasTags ? 7.f : 0.f;
    BOOL middleWrapperHasAtleastOne = self.middleWrapperHasNote || self.middleWrapperHasStaff ||
    self.middleWrapperHasTags;
    self.middleWrapperLastTenPixelSpaceConstraint.constant = middleWrapperHasAtleastOne ? 7.f : 0.f;
    [self setNeedsUpdateConstraints];
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    [self setExcludedPaths];
    [self configureMiddleWrapperState];
}

结果与预期不符: enter image description here而不是一行。 当只有文本看起来像预期。  When Only Text

只有当我多次向上和向下滚动时,约束才会起作用。

2 个答案:

答案 0 :(得分:1)

尝试添加

[self setNeedsLayout];

[self setNeedsUpdateConstraints];

答案 1 :(得分:0)

我发现了这个问题。因为我的self.middleWrapperHasTags在重用时没有正确设置。