This is code by Mehul translated into Swift. I have not tested it, just translated:
override func viewWillAppear(animated: Bool) {
let imageView = UIImageView(image: UIImage(named: "UINavigationBarBackIndicatorDefault"))
imageView.tintColor = UIColor.redColor()
let label = UILabel.init()
label.textColor = UIColor.redColor()
label.text = "Blog"
label.sizeToFit()
let space = 6 as CGFloat
label.frame = CGRectMake(imageView.frame.origin.x+imageView.frame.size.width+space, label.frame.origin.y, label.frame.size.width, label.frame.size.height)
let view = UIView(frame: CGRectMake(0, 0, label.frame.size.width+imageView.frame.size.width+space, imageView.frame.size.height))
view.bounds = CGRectMake(view.bounds.origin.x+8, view.bounds.origin.y-1, view.bounds.size.width, view.bounds.size.height)
view.addSubview(imageView)
view.addSubview(label)
//instead of adding the button, in my opinion the better approach is to use a gesture recognizer.
let tap = UITapGestureRecognizer(target: self, action: "handleBack:")
view.addGestureRecognizer(tap)
view.userInteractionEnabled = true
UIView.animateWithDuration(0.33, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
label.alpha = 0
let orig = label.frame
label.frame = CGRectMake(label.frame.origin.x+25, label.frame.origin.y, label.frame.size.width, label.frame.size.height)
label.alpha = 1
label.frame = orig
}, completion: nil)
let backButton = UIBarButtonItem(customView: view)
}
func handleBack(sender: AnyObject) {
}