Возможно ли... ф


#1

Возможно ли сменить отступ кнопок в UINavigationBar-e, включая backButton?
Очень не хочется ради этого писать свою реализацию навигейшн бара.


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