2015-10-26 3 views
0

Это еще один из тех, «я сделал это раньше и работает в других проектах, но не могу для жизни меня выяснить, что не так».Проблемы с программными ограничениями 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

ответ

0

Я понял это

вместо

self.translatesAutoresizingMaskIntoConstraints = NO; 

должно быть

self.recipeImageView.translatesAutoresizingMaskIntoConstraints = NO; 
self.descriptionLabel.translatesAutoresizingMaskIntoConstraints = NO; 
Смежные вопросы