出于某种设计目的,我需要在导航栏上方放置一个图像。
Apple对不更改导航栏高度非常严格。..我不会去那里。
这是一个很大的应用程序,因此我不必分开更改每个控制器。
我的控制器大多数都出现在导航控制器中,所以我认为扩展UINavigationController可以解决问题(到目前为止)。有人对此有想法吗?
extension UINavigationController {
override open func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 11.0, *) {
// This add space under my nav bar
self.additionalSafeAreaInsets = UIEdgeInsets(top: 80, left: 0, bottom: 0, right: 0)
// Need to find a way to move down my nav and add the logo above
}
}
}
答案 0 :(得分:0)
放置图像的最佳方法是在导航标题中:
let logo = UIImage(named: "logo.png")
let imageView = UIImageView(image:logo)
self.navigationItem.titleView = imageView
如果您想要更可定制的内容,建议您使用SafeArea创建一个约束为0的视图。
答案 1 :(得分:0)
在您的xib中添加此视图:
并在您的类中创建您的navigationController,如下所示:
import UIKit
class TopLogoViewController: UIViewController {
@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let controller = UINavigationController(rootViewController: ViewController())
controller.navigationBar.backgroundColor = .green
controller.navigationBar.barTintColor = .green
controller.navigationBar.shadowImage = UIImage()
controller.navigationBar.isTranslucent = false
addChild(controller)
containerView.addSubview(controller.view)
controller.view.frame = containerView.bounds
controller.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
controller.didMove(toParent: self)
}
}