1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import UIKit
- extension UIToolbar {
- static func toolbar(onClear: (() -> Void)?, onDone: @escaping () -> Void) -> UIToolbar {
- let toolbar = UIToolbar()
- toolbar.sizeToFit()
- var buttons: [UIBarButtonItem] = []
- if let onClear = onClear {
- let clearButton = UIBarButtonItem(title: NSLocalizedString("_clear_", comment: ""), style: .plain) {
- onClear()
- }
- buttons.append(clearButton)
- }
- buttons.append(UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil))
- let doneButton = UIBarButtonItem(title: NSLocalizedString("_done_", comment: ""), style: .done) {
- onDone()
- }
- buttons.append(doneButton)
- toolbar.setItems(buttons, animated: false)
- return toolbar
- }
-
- var wrappedSafeAreaContainer: UIView {
- let view = InputBarWrapper()
- view.addSubview(self)
- self.translatesAutoresizingMaskIntoConstraints = false
- NSLayoutConstraint.activate([
- self.topAnchor.constraint(equalTo: view.topAnchor),
- self.leftAnchor.constraint(equalTo: view.leftAnchor),
- self.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
- self.rightAnchor.constraint(equalTo: view.rightAnchor)
- ])
- return view
- }
- }
- class InputBarWrapper: UIView {
- var desiredHeight: CGFloat = 0 {
- didSet { invalidateIntrinsicContentSize() }
- }
- override var intrinsicContentSize: CGSize { CGSize(width: 0, height: desiredHeight) }
- required init?(coder aDecoder: NSCoder) { fatalError() }
- override init(frame: CGRect) {
- super.init(frame: frame)
- autoresizingMask = .flexibleHeight
- }
- }
|