我有ASViewController<ASDisplayNode>
。在init()
中,我将包含两个按钮的ASAbsoluteLayoutSpec
设置为显示节点。在ASViewController
生命周期中如何更改按钮位置?
答案 0 :(得分:1)
当然可以。只需在flag
方法中使用变量switch
或layoutThatFits:
语句来更改逻辑行为,并在更改flag
状态调用后仅self.setNeedsLayout
或{{1} }动画,以及此推荐的更改布局的方法。
有关更多信息,请阅读docs
示例:
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)
}
方法调用。不要忘了在致电之前更改状态。