     
     public func dismiss() {
         UIView.animateWithDuration(self.animationDuration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .AllowUserInteraction, animations: {
-            self.bannerState = .Hiding
+            self.bannerState = .Hidden
         }, completion: { finished in
             self.bannerState = .Gone
             self.removeFromSuperview()

import Foundation

private enum BannerState {
    case Showing, Hiding, Gone
}

public class Banner: UIView {

            superview.addConstraints(self.commonConstraints)
            self.showingConstraint = NSLayoutConstraint(item: self, attribute: .Top, relatedBy: .Equal, toItem: window, attribute: .Top, multiplier: 1.0, constant: 0.0)
            self.hiddenConstraint = NSLayoutConstraint(item: self, attribute: .Bottom, relatedBy: .Equal, toItem: window, attribute: .Top, multiplier: 1.0, constant: 0.0)
        }
    }
    
    public func show(duration: NSTimeInterval? = nil) {
        if let window = self.topWindow() {
            window.addSubview(self)
            self.forceUpdates()
            UIView.animateWithDuration(self.animationDuration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .AllowUserInteraction, animations: {
                self.bannerState = .Showing
            }, completion: { finished in
