Я пытаюсь сделать простую линию под тремя кнопками, чтобы создать эффект вкладок. Хотя я мог бы сделать это в раскадровке, я хотел бы сделать это в коде и в идеале сделать строку подпредставлением элемента, уже находящегося в представлении, чтобы не создавать для него особых ограничений.
Мой подход заключался в создании UILabel без текста и цвета фона. Однако я могу сделать UILabel подпредставлением View, которое не прикрепляет его к нижней части кнопок.
С другой стороны, если я сделаю UILabel подпредставлением одной из кнопок, я не смогу его увидеть.
Кто-нибудь может предложить простой способ сделать это?
[centerButton setTitle:@"Favorites" forState:UIControlStateNormal];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 120, 280, 2)];
label.backgroundColor = [UIColor redColor];
label.textAlignment = NSTextAlignmentCenter;
label.numberOfLines = 1;
label.text = @"";
[self.view addSubview: label];
Заранее спасибо за любые предложения.
Изменить:
Я попытался добавить некоторые NSLayoutConstraints программно:
NSLayoutConstraint *con3 = [NSLayoutConstraint
constraintWithItem:label attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual toItem:centerButton
attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
[label addConstraints:@[con3]];
//tried with and without
[self.view layoutIfNeeded];
Это вернуло исключение:
[LayoutConstraints] The view hierarchy is not prepared
for the constraint: <NSLayoutConstraint:0x174e85500 V:
[UIButton:0x100b0baf0'Now']-(0)-[UILabel:0x108555160]
(inactive)>
When added to a view, the constraint's items
must be descendants of that view (or the view itself).
This will crash if the constraint needs to be resolved
before the view hierarchy is assembled.
Break on -[UIView(UIConstraintBasedLayout)
_viewHierarchyUnpreparedForConstraint:] to debug.
Кнопка, созданная в раскадровке, является подпредставлением self.view, и я добавляю метку для self.view в качестве подпредставления в коде, поэтому не уверен, почему происходит исключение.