我以编程方式创建了一个UIBarButtonItem,并在文本上加上了下划线。有没有办法删除下划线?

let editButton = UIButton.init(type: .Custom)

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.title = "General Information"
    editButton.setTitleColor(UIColor.blueColor(), forState: .Normal)
    editButton.addTarget(self, action: #selector(editButtonPressed(_:)), forControlEvents: .TouchUpInside)
    editButton.frame.size = CGSize(width: 60, height: 30)
    editButton.titleLabel?.adjustsFontSizeToFitWidth = true
    let barButtonItem = UIBarButtonItem.init(customView: editButton)
    self.tabBarController?.navigationItem.setRightBarButtonItem(barButtonItem, animated: true)
    updateEditButtonTitle()
    self.navigationController!.navigationItem.backBarButtonItem?.tintColor = UIColor.blackColor()
}


这是带下划线的我得到的结果的图像。

swift - 如何从UIBarButtonItem删除下划线? ( swift )-LMLPHP

这是我设置按钮文本的功能。当它被按下时,它变成一个保存按钮。

func updateEditButtonTitle() {
    if let button = self.tabBarController?.navigationItem.rightBarButtonItem?.customView as? UIButton {
        var title = ""
        editButton.backgroundColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.55)
        editButton.layer.cornerRadius = 7.0
        if isInEditMode {
            title = "Save"
            editButton.setTitleColor(UIColor.redColor(), forState: .Normal)
            editButton.backgroundColor = UIColor.lightGrayColor().colorWithAlphaComponent(0.5)
            editButton.layer.cornerRadius = 7.0
            editButton.frame.size = CGSize(width: 60, height: 30)
        } else {
            editButton.setTitleColor(UIColor.blueColor(), forState: .Normal)
            title = "Edit"
        }

        button.setTitle(title, forState: .Normal)
    }
}

最佳答案

试试这个代码..

var attrStr: NSMutableAttributedString = yourBtnHere.attributedTitleForState(.Normal).mutableCopy()
//or whatever the state you want
attrStr.enumerateAttributesInRange(NSMakeRange(0, attrStr.characters.count), options: .LongestEffectiveRangeNotRequired, usingBlock: {(attributes: [NSObject : AnyObject], range: NSRange, stop: Bool) -> Void in
    var mutableAttributes: [NSObject : AnyObject] = [NSObject : AnyObject](dictionary: attributes)
    mutableAttributes.removeObjectForKey(.AttributeName)
    attrStr.setAttributes(mutableAttributes, range: range)
})


使用检查器/ IB:选择UIButton。
显示属性检查器。
文本设置应在“属性”中。选择文本,在喜欢的项目上单击,将下划线设置为无。
在此处输入图片说明

swift - 如何从UIBarButtonItem删除下划线? ( swift )-LMLPHP

但..

让我说清楚。苹果增加了一个辅助功能,允许用户根据需要用下划线标记按钮。

您想要一种克服此功能的方法,该功能专门设计用于在残障人士需要的功能时帮助残障人士使用其设备。

为什么?

使用标准按钮是极不可能的。如果您确实找到了解决方法,苹果可能会拒绝您的应用程序,因为它破坏了旨在帮助残疾人士的系统功能。

所以答案是:不要那样做。

关于swift - 如何从UIBarButtonItem删除下划线? ( swift ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37912815/

10-14 23:21