AsyncDisplayKit: размер не подходит для короткого текста - PullRequest
0 голосов
/ 29 января 2019

Я использую AsyncDisplayKit для создания своих макетов.

Из рисунка ниже я не могу понять, почему RepliedChatView вверху не растягивается до конца для короткого текста, но отлично работает надлинный / многострочный текст.Как я могу это исправить?

enter image description here

 override public func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
    let stack = ASStackLayoutSpec()
    stack.direction = .vertical
    stack.style.flexShrink = 1.0
    stack.style.flexGrow = 1.0

    stack.setChild(chatReplyNode, at: 0)
    stack.setChild(bubbleNode, at: 1)

    let verticalSpec = ASBackgroundLayoutSpec()
    verticalSpec.style.flexGrow = 1.0
    verticalSpec.style.flexShrink = 1.0
    verticalSpec.background = bubbleImageNode

    let messageContent = MessageModel(mockMessage: message)

        if(messageContent.message.count <= 20){

            let horizon = ASStackLayoutSpec(direction: .horizontal, spacing: 10, justifyContent: .start, alignItems: ASStackLayoutAlignItems.start, children: [stack , timeNode])
                verticalSpec.child = ASInsetLayoutSpec(
                    insets: UIEdgeInsets(
                        top: textNodeVerticalOffset,
                        left: textNodeVerticalOffset,
                        bottom: textNodeVerticalOffset,
                        right: textNodeVerticalOffset
                    ),
                    child: horizon)
        }else{
            stack.setChild(timeNode, at: 2)
            verticalSpec.child = ASInsetLayoutSpec(
                insets: UIEdgeInsets(
                    top: 8,
                    left: textNodeVerticalOffset,
                    bottom: 5,
                    right: textNodeVerticalOffset
            ), child: stack)
        }

   //space it
    let insetSpec = ASInsetLayoutSpec(insets: isOutgoing ? UIEdgeInsets(top: 1, left: 62, bottom: 5, right: 20) : UIEdgeInsets(top: 1, left: 20, bottom: 5, right: 62), child: verticalSpec)

    let stackSpec = ASStackLayoutSpec()
    stackSpec.direction = .vertical
    stackSpec.style.flexGrow = 1.0
    stackSpec.style.flexShrink = 1.0
    stackSpec.justifyContent = .center
    stackSpec.alignItems = isOutgoing ? .end : .start
    stackSpec.spacing = 0
    stackSpec.children = [insetSpec]
    return stackSpec
}

1 Ответ

0 голосов
/ 05 марта 2019

Я читаю ваши макеты и вижу следующее изображение:

enter image description here

...