Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ViewController: ASViewController<ASScrollNode>, UIScrollViewDelegate {
- let someFixedNode: ASDisplayNode = {
- let node = ASDisplayNode()
- node.backgroundColor = .red
- node.style.height = ASDimension(unit: .points, value: 250)
- return node
- }()
- let someFlexibleNode: ASDisplayNode = {
- let node = ASDisplayNode()
- node.backgroundColor = .blue
- return node
- }()
- init() {
- super.init(node: ASScrollNode())
- }
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- self.node.view.alwaysBounceVertical = true
- self.node.view.showsVerticalScrollIndicator = false
- self.node.view.bounces = true
- self.node.automaticallyManagesSubnodes = true
- node.automaticallyManagesContentSize = true
- self.node.view.delegate = self
- self.node.setNeedsLayout()
- self.node.layoutSpecBlock = { node, sizeRange in
- return ASStackLayoutSpec(direction: .vertical,
- spacing: 0,
- justifyContent: .start,
- alignItems: .stretch,
- children: [self.someFlexibleNode, self.someFixedNode])
- }
- }
- // MARK: - UIScrollViewDelegate implementation
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
- if scrollView.contentOffset.y < 0 {
- someFlexibleNode.style.height = ASDimension(unit: .points, value: abs(scrollView.contentOffset.y))
- someFlexibleNode.setNeedsLayout()
- }
- }
- }
Add Comment
Please, Sign In to add comment