Swiftgram/Display/StatusBar.swift
2016-03-28 17:13:25 +03:00

60 lines
1.6 KiB
Swift

import Foundation
import AsyncDisplayKit
public class StatusBarSurface {
var statusBars: [StatusBar] = []
func addStatusBar(statusBar: StatusBar) {
self.removeStatusBar(statusBar)
self.statusBars.append(statusBar)
}
func insertStatusBar(statusBar: StatusBar, atIndex index: Int) {
self.removeStatusBar(statusBar)
self.statusBars.insert(statusBar, atIndex: index)
}
func removeStatusBar(statusBar: StatusBar) {
for i in 0 ..< self.statusBars.count {
if self.statusBars[i] === statusBar {
self.statusBars.removeAtIndex(i)
break
}
}
}
}
public class StatusBar: ASDisplayNode {
public var style: StatusBarStyle = .Black
var proxyNode: StatusBarProxyNode?
override init() {
super.init()
self.clipsToBounds = true
self.userInteractionEnabled = false
}
func removeProxyNode() {
self.proxyNode?.hidden = true
self.proxyNode?.removeFromSupernode()
self.proxyNode = nil
}
func updateProxyNode() {
let origin = self.view.convertPoint(CGPoint(), toView: nil)
if let proxyNode = proxyNode {
proxyNode.style = self.style
} else {
self.proxyNode = StatusBarProxyNode(style: self.style)
self.proxyNode!.hidden = false
self.addSubnode(self.proxyNode!)
}
let frame = CGRect(origin: CGPoint(x: -origin.x, y: -origin.y), size: self.proxyNode!.frame.size)
self.proxyNode?.frame = frame
}
}