设置自定义 UINavigationBar 的 titleView
setting titleView of custom UINavigationBar
我有一个自定义导航栏,它实际上不执行任何导航控制(应用程序只有一个视图),而是用作 header 以在纯色背景下显示徽标。所以我在主视图控制器上放了一个导航栏并创建了一个插座,这样我就可以在代码中引用它。 (顺便使用 swift)。
现在我正在努力将徽标图像设置在导航栏的中央。我需要对 titleView 执行此操作(而不是设置整个背景图像)。到目前为止,我读到的是在视图控制器中使用 self.navigationItem.titleView
,但我认为这仅在使用 UINavigationController 时有效。到目前为止,这是我的代码:
@IBOutlet weak var navBar: UINavigationBar!
override func viewDidLoad() {
super.viewDidLoad()
let logoImage = UIImageView(frame: CGRect(x:0, y:0, width: 200, height: 45))
logoImage.contentMode = .ScaleAspectFit
let logo = UIImage(named: "logo.png")
logoImage.image = logo
self.navigationItem.titleView = logoImage
}
但这行不通。如何使用这样的自定义 UINavigationBar 访问 titleView?
您需要访问 UINavigationBar
的 topItem
属性。
然后你可以用UIImageView
.
设置topItem
的titleView
所以在你的情况下:
self.navBar.topItem?.titleView = logoImage
我有一个自定义导航栏,它实际上不执行任何导航控制(应用程序只有一个视图),而是用作 header 以在纯色背景下显示徽标。所以我在主视图控制器上放了一个导航栏并创建了一个插座,这样我就可以在代码中引用它。 (顺便使用 swift)。
现在我正在努力将徽标图像设置在导航栏的中央。我需要对 titleView 执行此操作(而不是设置整个背景图像)。到目前为止,我读到的是在视图控制器中使用 self.navigationItem.titleView
,但我认为这仅在使用 UINavigationController 时有效。到目前为止,这是我的代码:
@IBOutlet weak var navBar: UINavigationBar!
override func viewDidLoad() {
super.viewDidLoad()
let logoImage = UIImageView(frame: CGRect(x:0, y:0, width: 200, height: 45))
logoImage.contentMode = .ScaleAspectFit
let logo = UIImage(named: "logo.png")
logoImage.image = logo
self.navigationItem.titleView = logoImage
}
但这行不通。如何使用这样的自定义 UINavigationBar 访问 titleView?
您需要访问 UINavigationBar
的 topItem
属性。
然后你可以用UIImageView
.
topItem
的titleView
所以在你的情况下:
self.navBar.topItem?.titleView = logoImage