2017-03-18 62 views
1

我的導航欄右上角有一個欄按鈕項。我能夠改變字體,但不能改變字母間距。這是我使用的代碼,它只是改變了字體:如何將字母間距添加到UIBarButtonItem?

let font = UIFont(name: "Avenir-Light", size: 22) 
let attributes = [NSFontAttributeName: font!, 
         NSKernAttributeName : CGFloat(10.0)] as [String : Any] 
newListBarButtonItem.setTitleTextAttributes(attributes, for: .normal) 

我上面寫了我的視圖控制器的viewDidLoad,它只是改變了字體,不是字母間距。

我也試過以下,但這並沒有改變字體或字母間距:

UIBarButtonItem.appearance().setTitleTextAttributes(attributes,for: .normal) 

回答

1

您可以隨時添加一個UIView孩子上BarButtonItem customView。 例如將被格式化一個UIButton如何你想:

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let spacedButton = UIButton(type: .system) 
     spacedButton.setTitle("Button", for: .normal) 
     spacedButton.addTextSpacing(spacing: 6.0) 
     spacedButton.sizeToFit() 

     let barButton = UIBarButtonItem(customView: spacedButton) 

     self.navigationItem.rightBarButtonItem = barButton 
    } 
} 

下面是該UIButton的擴展:

extension UIButton { 
    func addTextSpacing(spacing: CGFloat) { 
     guard let text = self.titleLabel?.text else { return } 
     let attributedString = NSMutableAttributedString(string: text) 
     attributedString.addAttribute(NSKernAttributeName, 
            value: spacing, 
            range: NSRange(location: 0, length: text.characters.count)) 
     self.setAttributedTitle(attributedString, for: .normal) 
} 

}

結果:

enter image description here

+0

尼斯解!只需完成:您必須將目標設置到新的間隔按鈕上。 – inf1783