Я пытаюсь разместить некоторые представления в коде. Во время выполнения мне нужно проверить, сколько сделок у нас есть, а затем соответствующим образом разместить код. У меня есть UILabel и UIImageView.
Я создаю объекты следующим образом:
UILabel *numberOfDealsLabel = [UILabel new];
[numberOfDealsLabel setFont:[UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:50]];
numberOfDealsLabel.translatesAutoresizingMaskIntoConstraints = NO;
numberOfDealsLabel.textColor = [UIColor whiteColor];
[numberOfDealsLabel setTextAlignment:NSTextAlignmentCenter];
numberOfDealsLabel.numberOfLines = 1;
numberOfDealsLabel.text = [NSString stringWithFormat:@"%d", 2];
[numberOfDealsLabel sizeToFit];
numberOfDealsLabel.preferredMaxLayoutWidth = view.frame.size.width;
[view addSubview:numberOfDealsLabel];
UIImageView *dealsImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"deal"]];
[view addSubview:dealsImage];
Вид просто квадратный. Отсюда я пытаюсь добавить следующие ограничения, чтобы оба представления обнимали верхнюю часть представления и делили пространство по горизонтали.
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[numberOfDealsLabel][dealsImage]|" options:nil metrics:nil views:views]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[numberOfDealsLabel]|" options:nil metrics:nil views:views]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[dealsImage]|" options:nil metrics:nil views:views]];
Я получаю следующую ошибку:
Возможно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, значение которых вам непонятно, обратитесь к документации по свойству UIView translatesAutoresizingMaskIntoConstraints)
Эта ошибка вызвана следующим ограничением:
[представление addConstraints:[NSLayoutConstraint ограниченияWithVisualFormat:@"H:|[numberOfDealsLabel][dealsImage]|" параметры:нет показателей:ноль просмотров:просмотров]];
Я не понимаю, почему это вызывает проблему. Моей первой мыслью было то, что UILabel был слишком большим, и его размер плюс изображение вызывали проблему. Однако я изменил размер текста на очень маленькое число, и у меня все та же проблема.
Любые советы о том, что может быть причиной этой проблемы, были бы замечательными.