2013-11-16 3 views
3

Имея два вида headerView и footterView. Я хочу, чтобы взгляды были помещены один под другим. Я хочу сказать headerView сверху и снизу под заголовком headerView.AutoLayout для представлений, генерируемых программно

UIView *mainview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; 
    headerView = [[[NSBundle mainBundle] loadNibNamed:@"BaseHeader" owner:self options:nil] objectAtIndex:0]; 
    footterView = [[[NSBundle mainBundle] loadNibNamed:@"BaseFotter" owner:self options:nil] objectAtIndex:0]; 

self.view = mainview; 
[mainview addSubview:headerView]; 
[mainview addSubview:footterView]; 

Я попытался добавить ограничение, как показано ниже

NSDictionary *viewsDictionary = 
NSDictionaryOfVariableBindings(headerView,footterView); 

NSLayoutConstraint *constraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView]-[footterView]|" options:0 metrics:nil views:viewsDictionary] objectAtIndex:0]; 

NSLayoutConstraint *mconstraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[headerView(==footterView)]|" options:0 metrics:nil views:viewsDictionary] objectAtIndex:0]; 

[mainview addConstraint:constraint]; 
[mainview addConstraint:mconstraint]; 

Но всегда в одиночку footerView отображается на экране. Если я добавлю View в порядке ниже, всегда отображается HeaderView.

[mainview addSubview:footterView]; 
[mainview addSubview:headerView]; 

AutoLayout проверяется в обоих XIb (BaseHeader.xib & BaseFotter.xib). мне нужно делать больше в xib?

+1

Необходимо установить некоторые горизонтальные ограничения и/или ширину (для одного из видов), чтобы сделать ограничения недвусмысленными. – rdelmar

+0

Кроме того, почему вы используете objectAtIndex: 0 в ваших ограничениях с линиями VisualFormat? Этот метод создает массив ограничений, которые вы хотите добавить к своему представлению. Почему вы добавляете только первый? – rdelmar

+0

ya. Я должен был добавить все ограничения. Я добавляю массив ограничений. – sowmia

ответ

1

Измените ограничения добавления кода:

NSArray * ограничения = [NSLayoutConstraint constraintsWithVisualFormat: @ "V: | [headerView] - [footterView] |" options: 0 metrics: nil views: viewsDictionary];

NSArray * mconstraints = [Ограничения NSLayoutConstraintWithVisualFormat: @ "V: | [headerView (== footterView)] |" options: 0 metrics: nil views: viewsDictionary];

[mainview addConstraints: constraints]; [mainview addConstraints: mconstraints];

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