2013-04-05 2 views
4

Я хочу иметь возможность добавлять новые виды в супервизор, но чтобы они сохраняли постоянное вертикальное расстояние между собой. Для этого я попытался программно настроить ограничение для каждого представления, но я не мог понять, как это сделать. Проблема в том, что я не знаю заранее числа или относительной позиции просмотров.Ограничение автоопределения какао - программируемое заполнение переменной количества просмотров

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

ответ

7

Возможно этот короткий фрагмент кода, что вы ищете:

NSMutableArray* newVerticalConstraints = [NSMutableArray array]; 
UIView* firstView = nil; 
UIView* secondView = nil; 
UIView* superview = <Your container view>; 
NSArray* subviews = [superview subviews]; 
if ([subviews count] > 0) { 
    firstView = [subviews objectAtIndex:0]; 
    // Add first constraint 
    [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[firstView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView)]]; 

    for (int i = 1; i < [subviews count]; i++) { 
     secondView = [subviews objectAtIndex:i]; 
     [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[firstView]-10-[secondView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView,secondView)]]; 
     firstView = secondView; 
    } 

    // Add last constraint 
    [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[firstView]-10-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView)]]; 

    [superview removeConstraints:self.verticalConstraints]; 
    [superview addConstraints:newVerticalConstraints]; 
    // Save all vertical constraints to be able to remove them 
    self.verticalConstraints = newVerticalConstraints; 
} 

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

  • Нет связанных вопросов^_^