|
//
// UIBarButtonItemExt.swift
// ExtensionKit
//
// Created by FFIB on 2017/9/14.
// Copyright © 2017年 FFIB. All rights reserved.
//
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)
}
}
|