             options: [.BeginFromCurrentState, .AllowUserInteraction, .OverrideInheritedOptions],
             animations: {
                 self.menuView.frame = CGRect(origin: CGPoint(x: 0.0, y: self.view.frame.height-self.menuView.frame.height), size: self.menuView.frame.size)
-                self.menuView.layoutIfNeeded()
             },
             completion: {(finished) in
         })

        
        menuView.shapeLayer.frame = CGRect(origin: CGPointZero, size: menuView.frame.size)
        menuView.updatePath()
        
        for i in 0 ..< buttons.count {
            let btn = buttons[i]
            btn.frame  = CGRect(x: 0.0, y: 0.0, width: kButtonWidth, height: kButtonHeight)
            btn.center = CGPoint(x: view.center.x, y: -kButtonHeight * 0.25 + (kButtonHeight + kButtonInterval) * CGFloat(i + 1))
        }
        self.view.layoutIfNeeded()
    }
    
    override public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {

        return btn
    }
    
    // Add a label with a text
    private func addLabel(text: String) -> HOKLabel {
        let label = HOKLabel()
        label.layer.masksToBounds = true
        label.textAlignment = .Center
        label.text = text
        label.numberOfLines = 1
        menuView.addSubview(label)
        labels.append(label)
        return label
    }
    
    // Show the menu
    public func show() {
        if let rv = UIApplication.sharedApplication().keyWindow {
