2017-08-24 3 views
0

私はviewDidLoadのスーパービューのエッジに制約された単純なUITableViewを持っています。スーパービューのエッジにUITableViewを制限するとレイアウトの衝突が発生する

UITableView *tableView = [[UITableView alloc] init]; 
[tableView setBackgroundColor:[UIColor blackColor]]; 
tableView.delegate = self; 
tableView.dataSource = self; 
tableView.rowHeight = 44; 
[tableView registerClass:Cell.self forCellReuseIdentifier:@"cell"]; 

[self.view addSubview:tableView]; 

[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0].active = YES; 

[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1 constant:0].active = YES; 

[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1 constant:0].active = YES; 

[NSLayoutConstraint constraintWithItem:tableView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1 constant:0].active = YES; 

[self.view layoutIfNeeded]; 

私がビルドして実行する場合しかし、私は、コンソールに2つのレイアウトの問題を得る:

2017年8月24日12:08:21.676379から0400 objtest: [LayoutConstraints [62354 48633213] ]同時に制約を満たすことができません。 次のリストの制約のうち少なくとも1つが、望ましくない1つの である可能性があります。これを試してみてください:(1)それぞれの制約を見て、あなたが期待していないものを把握しよう。 (2) 不要な制約または制約を追加したコードを見つけて修正します。 (注意:あなたが理解していない 見NSAutoresizingMaskLayoutConstraintsなら、 はUIViewのプロパティのドキュメントを translatesAutoresizingMaskIntoConstraintsを参照してください)( ""、 「のUITableView:0x7fcf0f017600(アクティブ、名前: '|':UIViewの:0x7fcf0c604bf0)>」、 " (アクティブ)>"、 "")

はUIViewAlertForUnsatisfiableConstraints へのシンボリックブレークポイントを作成し、制約

を破って回復を試みますこれをデバッガでキャッチします。 UIViewの UIConstraintBasedLayoutDebuggingカテゴリのメソッドは、 にも表示されます。

2017年8月24日12:08:21.677146から0400 objtest [62354:48633213] [LayoutConstraints]同時に 満足することができません制約。おそらく、リストの下の の制約の少なくとも1つは、あなたが望まないものです。これを試してみてください:(1)各 の制約を見て、あなたが期待していないものを見つけよう。 (2) 不要な制約または制約を追加して修正するコードを見つけます。 (注意:あなたが理解していない NSAutoresizingMaskLayoutConstraintsを見ている場合は、UIViewのプロパティのドキュメントを参照してください translatesAutoresizingMaskIntoConstraints)( ""、 ""、 " (アクティブ)>"、 "" )

デバッガでこれをキャッチするUIViewAlertForUnsatisfiableConstraints でシンボリックブレークポイントを作成し、制約に

を破って回復を試みます。 UIViewの UIConstraintBasedLayoutDebuggingカテゴリのメソッドは、 にも表示されます。

助けがあれば助かります!ありがとう!あなたが忘れてしまったよう

答えて

3

はルックス:

tableView.translatesAutoresizingMaskIntoConstraints = NO;