Возможно ли сменить отступ кнопок в UINavigationBar-e, включая backButton?
Очень не хочется ради этого писать свою реализацию навигейшн бара.
Возможно ли... ф
Ookey
#1
Ookey
#2
Решил это изменением ширины navBar-a
import Foundation
import UIKit
private var AssociatedObjectHeightHandle: UInt8 = 0
private var AssociatedObjectWidthHandle: UInt8 = 1
extension UINavigationBar {
var height: CGFloat {
get {
let h = objc_getAssociatedObject(self, &AssociatedObjectHeightHandle) as? CGFloat
return h ?? 0
}
set {
objc_setAssociatedObject(self, &AssociatedObjectHeightHandle, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
var width: CGFloat {
get {
let w = objc_getAssociatedObject(self, &AssociatedObjectWidthHandle) as? CGFloat
return w ?? 0
}
set {
objc_setAssociatedObject(self, &AssociatedObjectWidthHandle, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
override open func sizeThatFits(_ size: CGSize) -> CGSize {
if self.width > 0, self.height > 0 {
return CGSize(width: self.width, height: self.height)
} else if self.height > 0 {
return CGSize(width: self.superview!.bounds.size.width, height: self.height)
} else if self.width > 0 {
return CGSize(width: self.width, height: self.superview!.bounds.size.height)
}
return super.sizeThatFits(size)
}
}