Get the frame of UIBarButtonItem in Swift?

Paul picture Paul · Mar 11, 2015 · Viewed 20.8k times · Source

how could I get the frame of a rightbarbuttonItem in swift? I found this : UIBarButtonItem: How can I find its frame? but it says cannot convert NSString to UIView, or cannot convert NSString to String :

let str : NSString = "view" //or type String
let theView : UIView = self.navigationItem.rightBarButtonItem!.valueForKey("view")//or 'str'

The goal is to remove the rightBarButtonItem, add an imageView instead, and move it with a fadeOut effect.

Thanks

Answer

Christian picture Christian · Mar 11, 2015

You should try it like:

var barButtonItem = self.navigationItem.rightBarButtonItem!
var buttonItemView = barButtonItem.valueForKey("view")

var buttonItemSize = buttonItemView?.size

Edit (Swift 3):

var barButtonItem = self.navigationItem.rightBarButtonItem!
let buttonItemView = barButtonItem.value(forKey: "view") as? UIView
var buttonItemSize = buttonItemView?.size