ios - AsyncDisplayKit:适合的大小不适用于短文本

标签 ios swift asyncdisplaykit

我正在使用 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
}

最佳答案

我阅读了您的布局并查看下一张图片:

enter image description here

关于ios - AsyncDisplayKit:适合的大小不适用于短文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54421236/

相关文章:

ios - 归档我的项目时,“无法导入桥接头”, 'file not found'

ios - CellNode 的 ASCollectionNode 全角布局

ios - inputAccessoryView 未显示在键盘上方

ios - 新Xcode开发电脑证书问题

ios - FileManager 说文件不存在

swift - “线程 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, 消退 = 0x0)

ios - TableView 在单元格上滚动时创建多个accessoryType

ios - UILabel 粗体/突出显示所有出现的子字符串

ios - 将 NSDate 从一个时区更改为另一个时区

swift - 如何使用 Texture 在 ASCellNode 中正确添加节点