Swiftgram/submodules/Display/Display/PeekControllerMenuNode.swift
Peter 8f5a4f7dc1 Add 'submodules/Display/' from commit '7bd11013ea936e3d49d937550d599f5816d32560'
git-subtree-dir: submodules/Display
git-subtree-mainline: 9bc996374ffdad37aef175427db72731c9551dcf
git-subtree-split: 7bd11013ea936e3d49d937550d599f5816d32560
2019-06-11 18:44:37 +01:00

32 lines
1.2 KiB
Swift

import Foundation
import UIKit
import AsyncDisplayKit
final class PeekControllerMenuNode: ASDisplayNode {
private let itemNodes: [PeekControllerMenuItemNode]
init(theme: PeekControllerTheme, items: [PeekControllerMenuItem], activatedAction: @escaping () -> Void) {
self.itemNodes = items.map { PeekControllerMenuItemNode(theme: theme, item: $0, activatedAction: activatedAction) }
super.init()
self.backgroundColor = theme.menuBackgroundColor
self.cornerRadius = 16.0
self.clipsToBounds = true
for itemNode in self.itemNodes {
self.addSubnode(itemNode)
}
}
func updateLayout(width: CGFloat, transition: ContainedViewLayoutTransition) -> CGFloat {
var verticalOffset: CGFloat = 0.0
for itemNode in self.itemNodes {
let itemHeight = itemNode.updateLayout(width: width, transition: transition)
transition.updateFrame(node: itemNode, frame: CGRect(origin: CGPoint(x: 0.0, y: verticalOffset), size: CGSize(width: width, height: itemHeight)))
verticalOffset += itemHeight
}
return verticalOffset - UIScreenPixel
}
}