我有ASViewController<ASDisplayNode>
。在init()
我设置为显示节点的新节点ASAbsoluteLayoutSpec
中包含两个按钮。如何在ASViewController
生命周期中更改按钮位置?
问问题
218 次
1 回答
1
当然,你可以。只需使用方法中的变量flag
或switch
语句layoutThatFits:
来更改逻辑行为,并在更改flag
状态后调用self.setNeedsLayout
或transitionLayoutWithAnimation: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 回答