2014-12-08 66 views
0

我正在編寫一個應用程序,該程序可以讓用戶使用令牌,並且我想在UINavigationBar中顯示用戶當前的令牌數量。我想要的是帶有許多標記的標籤,以及導航欄右上角的硬幣圖像。使用Swift對UINavigationBar進行子類化

我一直在尋找方法來定製UINavigationBar,並且發現了很多與添加圖像來覆蓋整個酒吧和更改標題相關的帖子。但是,我找不到一個簡單的方法來做我想做的事。

我想我需要繼承UINavigationBar,並添加文字/圖片我自己,但作爲新的iOS 發展和斯威夫特,我希望有人能指出我在正確的方向。

回答

5

您可以創建自定義視圖包含子視圖UILabelUIImageView顯示令牌數量和TOK圖像。將其添加到導航控制器的右側欄按鈕項目。

它看起來像:

enter image description here

下面的代碼將創建自定義視圖。在這裏你可以觀察到它是一個局部變量。但是,您可以管理自定義視圖的全局變量,也可以創建一個全新的類並單獨管理它以進行實時更新以顯示令牌編號。

// 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 
+0

非常感謝!這正是我想要的 – shacker 2014-12-09 02:24:27

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

感謝您的回答!我不認爲我現在需要按鈕調用一個函數,但如果我這樣做,我會確保使用它。 – shacker 2014-12-09 02:25:26

+0

當你創建UIBarButtonItem時,'target'可以是零。不過,用戶希望導航欄或工具欄中的按鈕可以做某些事情,所以我不確定這是一個好的設計,只需要在那裏有一個沒有任何影響的圖像。如果您只需要在硬幣數量旁邊放置一個硬幣,請創建一個自定義titleView並將其放在那裏。 – 2014-12-09 02:41:20

相關問題