簡體   English   中英

使用Swift子類化UINavigationBar

[英]Subclassing UINavigationBar with Swift

我正在編寫一個應用程序,向用戶提供要花費的令牌,並且想要在UINavigationBar顯示用戶當前的令牌數量。 我想要的是帶有令牌數量的標簽,並且在導航欄的右上角有一個硬幣的圖像。

我一直在尋找自定義UINavigationBar ,並且發現了很多與添加圖像以覆蓋整個欄以及更改標題有關的帖子。 但是,我找不到一種簡單的方法來做自己想要的事情。

我想我需要UINavigationBar並自己添加文本/圖像,但是對於iOS開發和Swift來說,我還是很陌生,我希望有人可以為我指明正確的方向。

您可以創建一個包含子視圖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

要顯示當前的令牌數量,您只需設置標題即可。 在您的視圖控制器中:

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:")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM