Центрирование узла по вертикали в горизонтальном положении ASStackLayout

Мне интересно, как правильно центрировать textNode внутри вертикального ASSStackNode, который находится внутри горизонтального ASStackNode без установки каких-либо размеров?

Я пробовал разные варианты с ASCenterLayout / ASRelativeLayout вокруг вертикального расположения, flewGrow, flexShrink. Единственный возможный способ, которым я вижу, - это статическое расположение с минимальной высотой вокруг вертикального расположения Но хочу найти другой способ.

Изображения для лучшей картины:

Моя структура макета:

раскладка

Что я получаю, когда одно из текстовых полей пусто:

введите описание изображения здесь

Что я хочу увидеть:

введите описание изображения здесь

1 ответ

Если ваш ASTextNode пуст или ноль. Это не значит, что узел не существует. Если вы хотите скрыть узел, если он пустой, вы должны написать для него простую логику. Для исключения это Спец из расчета. Что я использую на ADK1.9:

- (ASLayoutSpec *)layoutSpecThatFits: (ASSizeRange)constrainedSize
{
  NSMutableArray *arrayOfChildren = [NSMutableArray new];
  [arrayOfChildren insertObject:self.titleNode];
  if (self.textNode.text.length > 0) {
    [arrayOfChildren insertObject:self.textNode];
  }
  ASStackLayoutSpec *verticalElementCoreStack = [ASStackLayoutSpec stackLayoutSpecWithDirection:ASStackLayoutDirectionVertical spacing:8
                                                                                 justifyContent:ASStackLayoutJustifyContentCenter alignItems:ASStackLayoutAlignItemsStretch
                                                                                       children:arrayOfChildren];
  return verticalElementCoreStack;
}
Другие вопросы по тегам