【问题标题】:Wrapping nested ASStackLayoutSpec with AsyncDisplayKit用 AsyncDisplayKit 包装嵌套的 ASStackLayoutSpec
【发布时间】:2018-07-11 15:16:48
【问题描述】:

将嵌套 ASStackLayoutSpec 与 AsyncDisplayKit 一起使用,我正在努力实现这一目标

所以我正在创建一个带有头像的垂直 ASStackLayoutSpec 和另一个带有用户名、时间戳和文本的水平 ASStackLayoutSpec

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
    // HEADER with username and timestamp
    let spacer = ASLayoutSpec()
    spacer.style.flexGrow = 1
    let headerStackSpec = ASStackLayoutSpec.horizontal()
    headerStackSpec.spacing = 2
    headerStackSpec.alignItems = .baselineFirst
    headerStackSpec.children = [userNode, spacer, timestampNode]

    // CONTENT - HEADER and text
    let contentStackSpec = ASStackLayoutSpec.vertical()
    contentStackSpec.spacing = 2
    contentStackSpec.children = [headerStackSpec, messageNode]

    // MAIN - avatar and CONTENT
    let mainStackSpec = ASStackLayoutSpec.horizontal()
    mainStackSpec.spacing = 9
    mainStackSpec.children = [avatarNode, contentStackSpec]

    return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 2, left: 10, bottom: 2, right: 10), child: mainStackSpec)
}

但结果不是我所期望的

看起来文本到了无穷大,没有正确换行。时间戳也可能在右边很远的地方。

我尝试了 .alignItems.justifyContent 的不同组合,但无法正常工作。

【问题讨论】:

  • 尝试为 ASStackLayoutSpec 等 ASLayoutElements 设置 style.width

标签: ios swift asyncdisplaykit


【解决方案1】:

试试这些属性:

contentStackSpec.style.flexShrik = 1
messageNode.style.flexShrik = 1
contentStackSpec.children = [headerStackSpec, messageNode]

【讨论】:

    【解决方案2】:

    你需要在layoutSpecThatFits方法中设置你的消息节点width

    let messageWidth = UIScreen.main.bounds - (leftSpacing + rightSpacing)
    message.style.width = ASDimension(unit: .points, value: messageWidth)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 2017-01-08
      • 2016-03-14
      • 2023-04-10
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多