Просмотр с двумя позициями с помощью AutoLayout

У меня есть список представлений, которые я хочу разместить. У меня есть два состояния, где взгляды должны быть расположены по-разному.

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

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

NSMutableDictionary* metrics = [@{@"margin": @(TAB_BAR_ITEM_MARGIN)} mutableCopy];

for (int i = 0; i < [self.tabBarItems count]; i++)
{
    TabBarItem* item = [self.tabBarItems objectAtIndex:i];

    if (i > 0)
    {
        TabBarItem* lastAddedItem = [self.tabBarItems objectAtIndex:i - 1];
        NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(item, lastAddedItem);
        NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[item]-(==margin)-[lastAddedItem]" options:0 metrics:metrics views:viewsDictionary];
        [self.view addConstraints:constraints];
    }
    else
    {
        NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(item);
        NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(>=0)-[item]-(==margin)-|" options:0 metrics:metrics views:viewsDictionary];
        [self.view addConstraints:constraints];
    }

    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(item);
    NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(==0)-[item]" options:0 metrics:metrics views:viewsDictionary];
    [self.view addConstraints:constraints];
}

self.view — это superview из TabBarItem.

Теперь я хочу иметь возможность перемещать все TabBarItem в совершенно другое положение (вероятно, потребуются другие ограничения) с помощью AutoLayout.

Как мне подойти к этому? Могу ли я определить ограничение и удалить его, чтобы добавить другое?

Как уже упоминалось, я новичок в AutoLayout и действительно хочу сделать это правильно :-)


person ThomasCle    schedule 01.07.2014    source источник


Ответы (1)


Я достиг этого, имея два NSMutableArray: один для всех ограничений, необходимых в первой позиции, и один для всех ограничений, необходимых в другой позиции. Сделав это, я смог удалить активные ограничения из первого списка, а затем добавить новые из второго списка.

Не очень элегантно, но я не мог найти другого способа сделать это.

person ThomasCle    schedule 21.08.2014