0

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

4

1 回答 1

1

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

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:方法调用。不要忘记在此调用之前更改状态。

于 2018-07-23T06:04:31.370 回答