Это еще один из тех, «я сделал это раньше и работает в других проектах, но не могу для жизни меня выяснить, что не так».Проблемы с программными ограничениями NSLayout в таблицеViewCell
Я продолжаю получать странные ошибки ограничения, не уверен, что это из-за iOS 9 или что, но мне было интересно, сможет ли кто-нибудь помочь мне. Спасибо!
Мой класс вид ячейки таблицы
#import "TableViewCell.h"
@implementation TableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.translatesAutoresizingMaskIntoConstraints = NO;
self.recipeImageView = [UIImageView new];
self.recipeImageView.image = [UIImage imageNamed:@"imagePickerBackground"];
self.recipeImageView.layer.cornerRadius = 20;
self.recipeImageView.layer.borderColor = [[UIColor blackColor]CGColor];
self.recipeImageView.layer.borderWidth = 1;
self.recipeImageView.layer.masksToBounds = YES;
[self addSubview:self.recipeImageView];
self.descriptionLabel = [UILabel new];
self.descriptionLabel.text = @"description";
self.descriptionLabel.font = [UIFont fontWithName:@"Chalkduster" size:12];
self.descriptionLabel.textColor = [UIColor blackColor];
self.descriptionLabel.layer.cornerRadius = 20;
self.descriptionLabel.layer.borderWidth = 1;
self.descriptionLabel.layer.masksToBounds = YES;
self.descriptionLabel.layer.borderColor = [[UIColor blackColor]CGColor];
[self addSubview:self.descriptionLabel];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_descriptionLabel, _recipeImageView);
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[_recipeImageView]-10-|" options:0 metrics:nil views:viewsDictionary];
// NSArray *constraintsTwo = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[_recipeImageView]-10-|" options:0 metrics:nil views:viewsDictionary];
NSLayoutConstraint *equalConstraint = [NSLayoutConstraint constraintWithItem:self.descriptionLabel attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.recipeImageView attribute:NSLayoutAttributeWidth multiplier:1 constant:0];
NSArray *verticalConstrains = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[_recipeImageView(==200)]-10-[_descriptionLabel(==70)]-10-|" options:0 metrics:nil views:viewsDictionary];
[self addConstraints:constraints];
// [self addConstraints:constraintsTwo];
[self addConstraints:verticalConstrains];
[self addConstraint:equalConstraint];
}
return self;
}
@end
вот programatic методы регистрации в контроллере представления (DataSource и делегат табличное)
ввиду сделал нагрузки
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self registerTableView:self.tableView];
[self.view addSubview:self.tableView];
[self.tableView reloadData];
[self setUpNavigationBar];
}
зарегистрированный способ
- (void)registerTableView:(UITableView *)tableView {
[tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"cell"];
}
ячейки для строки с индексом пути
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
return cell;
}
высота строки (набор на 300)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 300;
}
стека ошибок (он не откажет, так что я не могу поставить точку останова, но просмотров в камере не обнаруживаются)
2015-10-26 15: 22: 05.524 Рецепт Diary [33894: 1375043] Невозможно одновременно удовлетворяют ограничениям. Вероятно, по крайней мере один из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте: (1) посмотреть на каждое ограничение и попытаться выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.525 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его.(Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «», «»)
будет пытаться восстановить путем нарушения связи
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.664 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.744 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( "", "", "", "", "")
будет пытаться восстановить разбив Constraint
сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.746 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его.(Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.747 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.759 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «», «»)
будет пытаться восстановить путем нарушения связи
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.760 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его.(Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.761 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( "", "", "", "", "")
будет пытаться восстановить разбив Constraint
сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.767 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.769 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его.(Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.804 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «», «»)
будет пытаться восстановить путем нарушения связи
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.806 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.839 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его.(Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( "", "", "", "", "")
будет пытаться восстановить разбив Constraint
сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. 2015-10-26 15: 22: 05.842 Рецепт Дневник [33894: 1375043] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке: , которого вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попробуйте выяснить, чего вы не ожидаете; (2) найти код, который добавил ненужное ограничение или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( «», «»)
будет пытаться восстановить разбив ограничение
Сделать символическую точку останова на UIViewAlertForUnsatisfiableConstraints , чтобы поймать это в отладчике. Способы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в , также могут быть полезными. Сообщение от отладчика: Прекращено из-за сигнала 15