初始化后如何更改按钮的位置?

How do I change the position of the button after initialization?

我有ASViewController<ASDisplayNode>。在 init() 中,我使用 ASAbsoluteLayoutSpec 将新节点设置为显示节点,其中包含两个按钮。如何在 ASViewController 生命周期内更改按钮位置?

当然可以。只需在 layoutThatFits: 方法中使用变量 flagswitch 语句来更改逻辑行为,并在更改 flag 状态后调用 self.setNeedsLayouttransitionLayoutWithAnimation:shouldMeasureAsync:measurementCompletion: 用于动画,此推荐方法用于更改布局。 有关详细信息,请阅读 docs 示例:

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
let fieldNode: FieldNode

  if self.fieldState == .signupNodeName { // flag dependens state
      fieldNode = self.nameField
  } else {
      fieldNode = self.ageField
  }

  let stack = ASStackLayoutSpec()
  stack.children = [fieldNode, buttonNode]

  let insets = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
  return ASInsetLayoutSpec(insets: insets, child: stack)
}

要更改布局,请使用 transitionLayoutWithAnimation:shouldMeasureAsync:measurementCompletion: 方法调用。不要忘记在此调用之前更改状态。