我正在编写一个应用程序,用户可以使用令牌,我希望在UINavigationBar
中显示用户当前的令牌数量。我想要的是带有令牌数量的标签,以及导航栏右上角的硬币图像。
我一直在寻找自定义UINavigationBar
的方法,并且发现了大量与添加图片以覆盖整个条形图以及更改标题相关的帖子。但是,我找不到一种简单的方法来做我想做的事。
我想我需要继承UINavigationBar
并自己添加文本/图片,但是对于 iOS 开发和Swift的新手,我希望有人可以指出我正确的方向
答案 0 :(得分:5)
您可以创建包含子视图UILabel
和UIImageView
的自定义视图,以显示令牌编号和令牌图像。将其添加到导航控制器的右侧栏按钮项。
看起来像:
下面的代码将创建自定义视图。在这里你可以观察到它是一个局部变量。但是,您可以管理自定义视图的全局变量,或创建一个全新的类并单独管理它以进行实时更新以显示令牌编号。
// 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
答案 1 :(得分:0)
要显示当前的令牌数,您只需设置标题即可。在视图控制器中:
navigationItem.title = '\(numberOfCoins) coins"
如果你想做更多花哨的事情,你可以设置自己的标题视图,而不是标准的UILabel:
navigationItem.titleView = UIView(...) // your custom view
要在右上角显示硬币,您需要设置rightBarButtonItem
:
navigationItem.rightBarButtonItem = UIBarButtonItem(
image: UIImage(named:"Coin"),
style: .Plain,
target:self,
action:"tappedCoinButton:")