2017-01-31 34 views
0

我有一个自定义UITableViewCellUITextView,UICollectionViewUITableView里面。他们之间有10 px的空间。在某些情况下,我只有UITextView,有时只有收集视图等UITableViewCell限制未更新

当没有文字 - 我必须将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

仅当我多次上下滚动时,约束条件才有效。

回答

0

尝试添加

[self setNeedsLayout]; 

[self setNeedsUpdateConstraints]; 
+0

它会循环 - setNeedsLayout力量[自我layoutSubviews] –

+0

所以我认为你必须移动你的逻辑somewere其他。也许 - (void)awakeFromNib会适合。 – Moonkid

+0

在awakeFromNib我不知道如何提供笔记文本等因为它没有设置在awakeFromNib –

0

我已经找到了问题。因为我的self.middleWrapperHasTags在重用时没有正确设置。