2017-01-31 36 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在重用時沒有正確設置。