   }
 
   public func setupFrames() {
-    titleLabel.sizeToFit()
+    let labelWidth = UIScreen.mainScreen().bounds.width
+    if let text = titleLabel.text {
+        let neededDimensions =
+            NSString(string: text).boundingRectWithSize(
+                CGSize(width: labelWidth, height: CGFloat.infinity),
+                options: NSStringDrawingOptions.UsesLineFragmentOrigin,
+                attributes: [NSFontAttributeName: titleLabel.font],
+                context: nil
+            )
+        titleLabelHeight = CGFloat(neededDimensions.size.height)
+        titleLabel.numberOfLines = 0
+    } else {
+        titleLabel.sizeToFit()
+    }
 
-    whistleWindow.frame = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width,
-      height: Dimensions.height)
+    whistleWindow.frame = CGRect(x: 0, y: 0, width: labelWidth,
+      height: titleLabelHeight)
     view.frame = whistleWindow.bounds
     titleLabel.frame = view.bounds
   }

  }

  public func hide() {
    let finalOrigin = view.frame.origin.y - Dimensions.height
    UIView.animateWithDuration(0.2, animations: {
      self.whistleWindow.frame.origin.y = finalOrigin
      }, completion: { _ in

    hideTimer.invalidate()

    let initialOrigin = whistleWindow.frame.origin.y
    whistleWindow.frame.origin.y = initialOrigin - titleLabelHeight
    whistleWindow.makeKeyAndVisible()
    UIView.animateWithDuration(0.2, animations: {
      self.whistleWindow.frame.origin.y = initialOrigin
