AsyncDisplayKey - вывод стека не отображается на экране

Я пытаюсь создать stacklayout внутри cellnode, но на экране ничего не отображается

class Node: ASCellNode {

    let blackNode = ASDisplayNode()
    let blueNode = ASDisplayNode()

    override init() {
        super.init()
        self.addSubnode(blueNode)
        self.addSubnode(blackNode)
    }

    override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
        blackNode.backgroundColor = .black
        blueNode.backgroundColor = .blue


        let contentStackSpec = ASStackLayoutSpec(direction: .horizontal,
                                                spacing: 40,
                                                justifyContent: .start,
                                                alignItems: .center,
                                                children: [blackNode, blueNode])

        contentStackSpec.style.minWidth = ASDimensionMakeWithPoints(60.0);
        contentStackSpec.style.maxHeight = ASDimensionMakeWithPoints(40.0);

        return ASRelativeLayoutSpec(horizontalPosition: .center, verticalPosition: .center, sizingOption: .init(rawValue: 0), child: contentStackSpec)
    }
}

Что я делаю неправильно?

1 ответ

Я думаю, что вы должны использовать ASInsetLayoutSpec для отображения ASStackLayoutSpec вместо ASRelativeLayoutSpec,

Ниже приведена реализация вашего кода с использованием ASInsetLayoutSpec для отображения ASStackLayoutSpec:

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
        blackNode.backgroundColor = .black
        blueNode.backgroundColor = .blue


        let contentStackSpec = ASStackLayoutSpec(direction: .horizontal,
                                                spacing: 40,
                                                justifyContent: .start,
                                                alignItems: .center,
                                                children: [blackNode, blueNode])

        contentStackSpec.style.minWidth = ASDimensionMakeWithPoints(60.0);
        contentStackSpec.style.maxHeight = ASDimensionMakeWithPoints(40.0);

        let cardInsetSpec : ASInsetLayoutSpec = ASInsetLayoutSpec(insets: UIEdgeInsetsMake(5, 5, 5, 5), child: contentStackSpec)  

        return cardInsetSpec

    }
Другие вопросы по тегам