初始化后如何更改按钮的位置?
How do I change the position of the button after initialization?
我有ASViewController<ASDisplayNode>
。在 init()
中,我使用 ASAbsoluteLayoutSpec
将新节点设置为显示节点,其中包含两个按钮。如何在 ASViewController
生命周期内更改按钮位置?
当然可以。只需在 layoutThatFits:
方法中使用变量 flag
或 switch
语句来更改逻辑行为,并在更改 flag
状态后调用 self.setNeedsLayout
或 transitionLayoutWithAnimation: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:
方法调用。不要忘记在此调用之前更改状态。
我有ASViewController<ASDisplayNode>
。在 init()
中,我使用 ASAbsoluteLayoutSpec
将新节点设置为显示节点,其中包含两个按钮。如何在 ASViewController
生命周期内更改按钮位置?
当然可以。只需在 layoutThatFits:
方法中使用变量 flag
或 switch
语句来更改逻辑行为,并在更改 flag
状态后调用 self.setNeedsLayout
或 transitionLayoutWithAnimation: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:
方法调用。不要忘记在此调用之前更改状态。