使用Swift对UINavigationBar进行子类化

sha*_*ker 0 uinavigationbar ios swift

我正在编写一个应用程序,用户可以使用令牌,我希望显示用户当前的令牌数量UINavigationBar.我想要的是带有令牌数量的标签,以及导航栏右上角的硬币图像.

我一直在寻找自定义的方法UINavigationBar,并且发现了很多与添加图像以覆盖整个栏目以及更改标题相关的帖子.但是,我找不到一个简单的方法来做我想要的.

我想我需要自己子类化UINavigationBar并添加文本/图像,但对iOS开发和Swift来说是新手,我希望有人能指出我正确的方向.

Kam*_*pai 5

您可以创建包含子视图的自定义视图,UILabelUIImageView显示令牌编号和令牌图像.将其添加到导航控制器的右栏按钮项.

它看起来像:

在此输入图像描述

下面的代码将创建自定义视图.在这里你可以观察到它是一个局部变量.但是,您可以管理自定义视图的全局变量,或者创建一个全新的类并单独管理它以进行实时更新以显示令牌编号.

// Custom to hold token number and image
let tokenView = UIView(frame: CGRect(x:0, y:0, width:100, height:44))
tokenView.backgroundColor = UIColor.yellow

// Label to show token number
let tokenLabel = UILabel(frame: CGRect(x:0, y:0, width:60, height:44))
tokenLabel.text = "1234"
tokenLabel.textAlignment = NSTextAlignment.right

let imageHeight = CGFloat(30)
let marginY = CGFloat((tokenView.frame.size.height / 2) - (imageHeight / 2))

// ImageView to display token image
let tokenImage = UIImageView(image: UIImage(named: "coin"))
tokenImage.frame = CGRect(x:70, y:marginY, width:30, height:30)

tokenView.addSubview(tokenLabel)
tokenView.addSubview(tokenImage)

// Add custom view as a right bar button item
let barButtonItem = UIBarButtonItem(customView: tokenView)
self.navigationItem.rightBarButtonItem = barButtonItem
Run Code Online (Sandbox Code Playgroud)