0

Я пытаюсь разместить некоторые представления в коде. Во время выполнения мне нужно проверить, сколько сделок у нас есть, а затем правильно расположить код. У меня есть UILabel и UIImageView.Autolayout программно и 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, что вы не понимаете, обратитесь к документации по translatesAutoresizingMaskIntoConstraints собственности UIView)

Эта ошибка была вызвана следующим ограничением:

[смотреть addConstraints: [Ограничения NSLayoutConstraintWithVisualFormat: @ "H: | [numberOfDealsLabel] [dealsImage] |" options: nil metrics: nil views: views]];

Я не понимаю, почему это вызывает проблему. Моя первая мысль заключалась в том, что UILabel был слишком большой, и размер этого плюс изображение вызывало проблему. Однако я изменил размер текста на очень небольшое число, и у меня все еще есть та же проблема.

Любые советы о том, что может вызвать эту проблему, были бы замечательными.

ответ

3

Из того, что это выглядит, вы не вызывая «translatesAutoresizingMaskIntoConstraints = NO» на UIIamgeView, это должно помочь, по крайней мере немного, если не просто исправить все проблемы

так, это первое, что я

UIImageView *dealsImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"deal"]]; 
[dealsImage setTranslatesAutoresizingMaskIntoConstraints:FALSE]; //this is new code 
[view addSubview:dealsImage]; 

От Apple::

For views that are aware of Auto Layout, in most circumstances you want translatesAutoresizingMaskIntoConstraints to be NO.

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AdoptingAutoLayout/AdoptingAutoLayout.html

бы сделать, если бы я тебя
+0

Это была точная проблема. Я установил его для UILabel, но не для ImageView. Благодарю. – pls

Смежные вопросы