Nav apraksta

UIBarButtonItemExt.swift 3.0KB

    // // 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) } }