У меня есть вид, как показано ниже, который имеет автомаршрут, установленный в xib. Добавление Autolayout программно к существующему автозапуску Просмотры, добавленных в xibs
Теперь мне нужно добавить уведомление об ошибке, которое будет анимировать сверху, а существующие виды будут перемещаться вниз, как показано на рисунке ниже.
Я знаю, что могу сделать это легко, просто добавив этот вид ошибки в моем существующем контроллере представления и управления его высота ограничений. Но у меня есть пара других представлений, где мне нужно повторно использовать это представление ошибок. Итак, теперь я создал настраиваемый вид для этого представления ошибки. Теперь моя основная проблема заключается в том, чтобы добавить это к моему mainview программно с автозапуском. Поэтому мне нужно добавить синий обзор ошибок в мой self.view и удалить верхнее ограничение макета зеленого представления и установить его верхний вид на синюю ошибку. Имеют смысл? Ниже приведен мой код для просмотра ошибок и добавление его в self.view. Но даже это не работает, я делаю что-то неправильно здесь. Любая помощь приветствуется.
-(id)initWithdelegate:(id)parentSelf ForView:(UIView *)parentView
{
if (self = [super initWithFrame:CGRectMake(0, 0, 100, 100)])
{
// Initialization code
self=(ErrorView*)[[[NSBundle mainBundle] loadNibNamed:@"ErrorView" owner:nil options:nil]objectAtIndex:0];
self.delegate=parentSelf;
[parentView addSubview:self];
self.hidden = YES;
[self setConstraintsToParentView:parentView];
}
return self;
}
-(void)setConstraintsToParentView:(UIView *)parentView
{
[parentView setTranslatesAutoresizingMaskIntoConstraints:NO];
//Setting width equal to parentview
[parentView addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
//Setting fixed height of 50
[parentView addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:50]];
//Setting x pos to center
[parentView addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0]];
//Setting top position to self.view with constant 20
[parentView addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:20]];
}
Я звоню ErrorView, как это от моего ViewController
myErrorView = [[ErrorView alloc]initWithdelegate:self ForView:self.view];
Как именно это «не работает»? – Kreiri
На данный момент это дает мне ошибку, Невозможно одновременно удовлетворить ограничения. – Gamerlegend
какие ограничения? – Kreiri