2017-03-18 24 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