2016-09-08 9 views
0

動的テーブルビューセルを構築しています。高さは、読み込まれたコンテンツに基づいて動的です。私はイメージビューの高さでハングアップしています。画像は現在、幅の100%の画像ビューにアスペクトフィルをロードします。テーブルビューセルのイメージがない場合、イメージビューが隠されている(高さが0である)ように、イメージビューに自動レイアウト制約を設定できますか?画像レイアウトが画像の高さに設定されるように自動レイアウト制約を設定できますか

enter image description here

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    TableViewTileCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tileCell"]; 

    if (!cell) 
    { 
     [tableView registerNib:[UINib nibWithNibName:@"TableViewTileCell" bundle:nil] forCellReuseIdentifier:@"tileCell"]; 
     cell = [tableView dequeueReusableCellWithIdentifier:@"tileCell"]; 
    } 
    cell.tileView.layer.borderColor = [UIColor blackColor].CGColor; 
    cell.tileView.layer.borderWidth = 1.0f; 

    [cell.contentView setBackgroundColor:[UIColor colorWithRed:0.96 green:0.96 blue:0.96 alpha:1.0]]; 

    NSString *url=[self.resultsArray[indexPath.row] valueForKey:@"imageURL"]; 

    cell.tileTitle.text = [self.resultsArray[indexPath.row] valueForKey:@"title"]; 
    cell.tileDate.text = [self.resultsArray[indexPath.row] valueForKey:@"date"]; 
    cell.tileContent.text = [self.resultsArray[indexPath.row] valueForKey:@"summary"]; 

    if(![url isEqualToString:@""]){ //If we got a url value back load the image 
     [cell.tileImageview setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
    } 

    return cell; 
} 
+1

'cellForRowAtIndexPath'を投稿できますか? – Adrian

答えて

1

テーブルビューのセルの画像がない場合(0の高さを持っている)ImageViewのが隠されているように、私のImageViewの上で自動レイアウトの制約を設定することが可能ですか?

セルの内容全体を垂直なUIStackViewにします。 cellForRowでは、画像ビューを非表示にします。スタックビューには、記述したとおりに制約を変更する素晴らしい機能があります。イメージビューが非表示になると、制約が変更され、イメージビューはゼロスペースを占め、他のビューはスペース全体を占めます。

UIStackViewのやり方だけで、コード内の空の画像ビューを削除して、cellForRowに制約を調整するだけで、あなた自身が行う必要があります。インターフェイスとの間で制約とビューを交換するのが標準的な方法であり、簡単です。

+0

ありがとうMatt!制約を条件付きで変更するためのコードを一緒に作るためのプロセスを始めましたが、自動レイアウトではもっと簡単になるはずです。 – propstm

関連する問題