2017-01-31 5 views
0

У меня есть обычай UITableViewCell с UITextView, UICollectionView и UITableView внутри. Расстояние между ними составляет 10 px. В некоторых случаях у меня есть только UITextView, иногда только просмотр коллекции и т. Д.UITableViewCell Constraints не обновляется

Когда нет текста - мне нужно переместить UICollection view up на 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 force [self layoutSubviews] –

+0

Итак, я думаю, что вам нужно переместить свою логику где-то еще. Может быть - (void) awakeFromNib подойдет. – Moonkid

+0

В awakeFromNib Я не знаю, как подавать текст заметки и т. Д. Coz Он не установлен в awakeFromNib –

0

Я нашел этот вопрос. Coz my self.middleWrapperHasTags не устанавливается правильно при повторном использовании.