私は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カテゴリのメソッドは、 にも表示されます。
助けがあれば助かります!ありがとう!あなたが忘れてしまったよう