Skip to content

Instantly share code, notes, and snippets.

@matnogaj
Created June 15, 2017 10:54
Show Gist options
  • Save matnogaj/07454f1b3e49726040f45232c5cde76a to your computer and use it in GitHub Desktop.
Save matnogaj/07454f1b3e49726040f45232c5cde76a to your computer and use it in GitHub Desktop.
Custom view for UIBarButtonItem
public class CustomBarButton: UIControl {
@IBInspectable
public var image: UIImage? {
didSet {
imageView.image = image
}
}
@IBInspectable
public var text: String? {
didSet {
textLabel.text = text
}
}
private let imageView: UIImageView = {
let view = UIImageView()
view.contentMode = .scaleAspectFit
view.isUserInteractionEnabled = false
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
private let textLabel: UILabel = {
let label = UILabel()
label.isUserInteractionEnabled = false
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
public override func awakeFromNib() {
super.awakeFromNib()
setup()
}
private func setup() {
addSubview(imageView)
addSubview(textLabel)
NSLayoutConstraint.activate([
imageView.leftAnchor.constraint(equalTo: leftAnchor),
imageView.topAnchor.constraint(equalTo: topAnchor),
imageView.bottomAnchor.constraint(equalTo: bottomAnchor),
textLabel.leftAnchor.constraint(equalTo: imageView.rightAnchor, constant: 5.0),
textLabel.topAnchor.constraint(equalTo: topAnchor),
textLabel.bottomAnchor.constraint(equalTo: bottomAnchor)
])
setNeedsLayout()
layoutIfNeeded()
var rect = bounds
rect.size.width = textLabel.frame.maxX
bounds = rect
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment