|
//
// UINavigationBar+FixSpace.swift
// PaiaiUIKit
//
// Created by ffib on 2019/1/15.
// Copyright © 2019 yb. All rights reserved.
//
import UIKit
@available(iOS 11.0, *)
extension UINavigationBar {
static func swizzedMethod() {
let originalSelector = #selector(UINavigationBar.layoutSubviews)
let swizzledSelector = #selector(UINavigationBar.swizzle_layoutSubviews)
guard let originalMethod = class_getInstanceMethod(self, originalSelector),
let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) else { return }
let didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))
if didAddMethod {
class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
} else {
method_exchangeImplementations(originalMethod, swizzledMethod)
}
}
@objc func swizzle_layoutSubviews() {
swizzle_layoutSubviews()
layoutMargins = .zero
for view in subviews {
guard NSStringFromClass(view.classForCoder).contains("ContentView") else { continue }
view.layoutMargins = UIEdgeInsets.zero
break
}
}
}
|