2017-01-31 19 views
0

UITableViewCellUITextView,UICollectionViewおよびUITableViewというカスタムがあります。それらの間には10ピクセルのスペースがあります。場合によってはUITextView、時にはコレクションビューなどしかない場合があります。UITableViewCell制約が更新されない

テキストがない場合 - UICollectionビューを10ピクセル上に移動する必要があります。テキストがない場合、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代わりの1行。 テキストのみが期待どおりの場合。 When Only Text

制約は、何度も上下にスクロールすると作業になります。

答えて

0

は、私は問題を発見した

[self setNeedsLayout]; 

[self setNeedsUpdateConstraints]; 
+0

それはループします - setNeedsLayout力[自己layoutSubviews] –

+0

だから私はあなたがsomewere他のあなたのロジックを移動することがあると思います。たぶん - (void)awakeFromNibは適合します。 (NSStringの*)をnewText:(空)configureWithText - awakeFromNibで – Moonkid

+0

私はコーズは、それが次に、テキストでのセルを設定し、制約を更新する新しいメソッドを作成awakeFromNib –

0

後に追加してみてください。私のself.middleWrapperHasTagsは、再利用時に正しく設定されていません。

関連する問題