12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import UIKit
- public extension UIBarButtonItem {
- convenience init(space: CGFloat) {
- self.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
- self.width = space
- }
-
- convenience init(image: UIImage?, target: Any, action: Selector) {
- let button = UIButton(type: .custom)
- button.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
- button.setImage(image, for: .normal)
- button.addTarget(target, action: action, for: .touchDown)
- self.init(customView: button)
- }
-
- convenience init(title: String, target: Any, action: Selector) {
- let button = UIButton(type: .custom)
- button.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
- button.setTitle(title, for: .normal)
- button.addTarget(target, action: action, for: .touchDown)
- button.sizeToFit()
- self.init(customView: button)
- }
-
- convenience init(titles: [String], btnSpace: CGFloat, target: Any, actions: [Selector]) {
- let barView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 44))
- var lastX: CGFloat = 0
- for (title, action) in zip(titles, actions) {
- let button = UIButton(type: .custom)
- button.frame = CGRect(x: lastX, y: 2, width: 40, height: 40)
- button.setTitle(title, for: .normal)
- button.addTarget(target, action: action, for: .touchDown)
- button.sizeToFit()
- button.center = CGPoint(x: button.center.x, y: barView.center.y)
- barView.addSubview(button)
- lastX += button.width + btnSpace
- }
- barView.width = lastX
- self.init(customView: barView)
- }
-
- convenience init(images: [UIImage?], btnSpace: CGFloat, target: Any, actions: [Selector]) {
- let barView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 36))
- barView.backgroundColor = UIColor.cyan
-
- var last: UIButton?
- for (image, action) in zip(images, actions) {
- let button = UIButton(type: .custom)
- button.translatesAutoresizingMaskIntoConstraints = false
- button.setImage(image, for: .normal)
- button.addTarget(target, action: action, for: .touchDown)
- barView.addSubview(button)
-
- NSLayoutConstraint.activate([
- button.widthAnchor.constraint(equalToConstant: 36),
- button.heightAnchor.constraint(equalToConstant: 36),
- button.centerYAnchor.constraint(equalTo: barView.centerYAnchor),
- button.leadingAnchor.constraint(equalTo: last?.trailingAnchor ?? barView.leadingAnchor)
- ])
- last = button
- }
-
- if let l = last {
- NSLayoutConstraint.activate([l.trailingAnchor.constraint(equalTo: barView.trailingAnchor)])
- }
-
- self.init(customView: barView)
- }
- }
|