swift – 将NSAttributedString添加到UIBarButtonItem
我正在尝试在后栏按钮项目上设置属性字符串.
这是我第一次尝试归因于字符串. 这是代码: self.navigationItem.hidesBackButton = true let barButtonBackStr = "< Back" var attributedBarButtonBackStr = NSMutableAttributedString(string: barButtonBackStr as String) attributedBarButtonBackStr.addAttribute(NSFontAttributeName,value: UIFont( name: "AmericanTypewriter-Bold",size: 18.0)!,range: NSRange( location:0,length:1)) let newBackButton = UIBarButtonItem(title: attributedBarButtonBackStr,style: UIBarButtonItemStyle.Plain,target: self,action: "barButtonBack:") self.navigationItem.leftBarButtonItem = newBackButton 这导致Xcode中出现以下错误.
任何人都知道如何做到这一点?谢谢. 解决方法
您无法直接将属性字符串设置为UIBarButtonItem.您必须为其标题设置一个普通字符串,然后设置标题的属性:
let barButtonBackStr = "< Back" let attributes: [String: AnyObject] = [NSFontAttributeName: UIFont(name: "AmericanTypewriter-Bold",size: 18)!] let newBackButton = UIBarButtonItem(title: barButtonBackStr,action: "barButtonBack:") newBackButton.setTitleTextAttributes(attributes,forState: .Normal) navigationItem.leftBarButtonItem = newBackButton 这种方法有一点需要注意:您无法为属性设置范围.这是全有或全无. 要为必须创建UILabel的属性定义范围,请将属性字符串设置为其attributionText属性,然后使用自定义视图创建UIBarButtonItem: let barButtonBackStr = "< Back" let attributedBarButtonBackStr = NSMutableAttributedString(string: barButtonBackStr as String) attributedBarButtonBackStr.addAttribute(NSFontAttributeName,value: UIFont( name: "AmericanTypewriter-Bold",range: NSRange( location:0,length:1)) let label = UILabel() label.attributedText = attributedBarButtonBackStr label.sizeToFit() let newBackButton = UIBarButtonItem(customView: label) self.navigationItem.leftBarButtonItem = newBackButton 当您想要使用此方法时,您必须知道必须将目标和操作设置为自定义视图,因为UIBarButtonItem不再处理它.正如它在Apple的文档中所说:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |