Nav apraksta

UIBarButtonItemExt.swift 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // UIBarButtonItemExt.swift
  3. // ExtensionKit
  4. //
  5. // Created by FFIB on 2017/9/14.
  6. // Copyright © 2017年 FFIB. All rights reserved.
  7. //
  8. import UIKit
  9. public extension UIBarButtonItem {
  10. convenience init(space: CGFloat) {
  11. self.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
  12. self.width = space
  13. }
  14. convenience init(image: UIImage?, target: Any, action: Selector) {
  15. let button = UIButton(type: .custom)
  16. button.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
  17. button.setImage(image, for: .normal)
  18. button.addTarget(target, action: action, for: .touchDown)
  19. self.init(customView: button)
  20. }
  21. convenience init(title: String, target: Any, action: Selector) {
  22. let button = UIButton(type: .custom)
  23. button.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
  24. button.setTitle(title, for: .normal)
  25. button.addTarget(target, action: action, for: .touchDown)
  26. button.sizeToFit()
  27. self.init(customView: button)
  28. }
  29. convenience init(titles: [String], btnSpace: CGFloat, target: Any, actions: [Selector]) {
  30. let barView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 44))
  31. var lastX: CGFloat = 0
  32. for (title, action) in zip(titles, actions) {
  33. let button = UIButton(type: .custom)
  34. button.frame = CGRect(x: lastX, y: 2, width: 40, height: 40)
  35. button.setTitle(title, for: .normal)
  36. button.addTarget(target, action: action, for: .touchDown)
  37. button.sizeToFit()
  38. button.center = CGPoint(x: button.center.x, y: barView.center.y)
  39. barView.addSubview(button)
  40. lastX += button.width + btnSpace
  41. }
  42. barView.width = lastX
  43. self.init(customView: barView)
  44. }
  45. convenience init(images: [UIImage?], btnSpace: CGFloat, target: Any, actions: [Selector]) {
  46. let barView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 36))
  47. barView.backgroundColor = UIColor.cyan
  48. var last: UIButton?
  49. for (image, action) in zip(images, actions) {
  50. let button = UIButton(type: .custom)
  51. button.translatesAutoresizingMaskIntoConstraints = false
  52. button.setImage(image, for: .normal)
  53. button.addTarget(target, action: action, for: .touchDown)
  54. barView.addSubview(button)
  55. NSLayoutConstraint.activate([
  56. button.widthAnchor.constraint(equalToConstant: 36),
  57. button.heightAnchor.constraint(equalToConstant: 36),
  58. button.centerYAnchor.constraint(equalTo: barView.centerYAnchor),
  59. button.leadingAnchor.constraint(equalTo: last?.trailingAnchor ?? barView.leadingAnchor)
  60. ])
  61. last = button
  62. }
  63. if let l = last {
  64. NSLayoutConstraint.activate([l.trailingAnchor.constraint(equalTo: barView.trailingAnchor)])
  65. }
  66. self.init(customView: barView)
  67. }
  68. }