2016-10-30 10 views
0

(iOS 8 with Storyboard) 私はtableView上で適切な詳細UITableViewCellを持っています。Dynamic UITableViewCellの高さが動作しません

は、ストーリーボードではタイトルと右の詳細ラベルはnumberoflinesに設定されている= 0

マイコード:私は[self.table reloadData]を実行cleanJsonの終わりに

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    keyArray = [[NSMutableArray alloc]init]; 
    self.table.estimatedRowHeight = 140.0; 
    self.table.rowHeight = UITableViewAutomaticDimension; 
    [spinner startAnimating]; 
    [self cleanJson:prunedDictionary]; 

} 

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{ 
    return UITableViewAutomaticDimension; 

} 

。 TableViewCellのサイズは変更されますが、それらはすべて同じサイズにサイズ変更され、デフォルトサイズのように見えます。なぜ彼らは正しくリサイズされていない

(ストーリーボードで、私は200に高さを設定し、アプリが実行されたとき、彼らはすべての小さいサイズにリサイズされたので、私は、彼らはサイズを変更知っている理由は)?

+0

あなたの制約がありそう間違っています。何とかあなたの質問にそれらを追加できますか? –

+0

@d。フェラー私が言及したように、それはカスタムセルではないので、制約はありません。したがって、それは既に私が知っている限り制約があります – huddie96

答えて

1

だ問題は、細胞型に建てられ、タイトルや詳細ラベルで構築を使用していることです。これらのセルタイプはセルフサイジングではありません。

カスタムセルを使用し、内側からセルのサイズを制約して、それを自分で設計しなければなりません。

0

あなたはこれら二つのデリゲートメソッドのいずれかを必要としません。自動レイアウト制約の設定がincorectであるため、セルのサイズが適切に変更されません。これらの制約を確認し、上から下に少なくとも1つの制約ビューパスが存在することを確認してください。それによって、あなたは論理的にセル自体の上からホップすることができます。このような

:スーパー

マージン制約

ビュー

マージン制約

トップ。

。スーパーの

ビュー

マージン制約

下。

間のビューは、固定サイズに制限するか、コンテンツに応じてサイズを変更できる必要があります。最終的な高さは、すべてのマージンと高さの組み合わせであることは明らかです。

それは線形関数

finalheight = topmargin + viewHeight + margin + viewHieght..etc....etc..bottommargin 
+0

それはカスタムセルではありません。だから、制約はすでに設定されていると私は信じている – huddie96

+0

本当に真実であることを確認できますか?前提条件は、デバッグの最悪の敵です。 –

+0

それはカスタムセルではないのですか?はいを確認できます。そのカスタムセルは制約を必要としません。ほぼ肯定的です。 – huddie96

0

そこの方法は、実際にある - しかし私は、カスタムUITableViewCellを作成好む:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    let cell = self.tableView(tableView, cellForRowAt: indexPath) 
    let targetSize = CGSize(width: self.tableView.bounds.width, height: CGFloat.infinity) 

    return cell.systemLayoutSizeFitting(targetSize, 
             withHorizontalFittingPriority: 1000, 
             verticalFittingPriority: 900).height 
} 
関連する問題