如何创建具有相同Buttonsystemitem点击效果的自定义UIButton

How to create a custom UIButton with same Buttonsystemitem click effect

我正在为我的导航栏创建一个自定义按钮项目,我希望它具有与按钮系统项目相同的效果(缓慢淡出) 这是我的代码:

var button_user : UIImage = UIImage(named:"user.png")!

        let button: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton

        button.setImage(UIImage(named: "user.png"), forState: UIControlState.Normal)
       button.setImage(UIImage(named: "user_clicked.png"), forState: UIControlState.Highlighted)
        button.addTarget(self, action: nil, forControlEvents: UIControlEvents.TouchUpInside)


        button.frame = CGRectMake(0, 0, 28, 30)

        let barButton = UIBarButtonItem(customView: button)

        self.navigationItem.rightBarButtonItem = barButton

编辑:您应该在导航栏中使用 UIBarButtonItem 而不是 UIButton。这样就可以了。

 self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "backbutton"), style: UIBarButtonItemStyle.Plain, target: self, action: "buttonClicked:")

并添加方法

func buttonClicked(sender: AnyObject){
    //Enter your code here
}

相应地为 UIControlState 添加更多 "images"

    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)


func buttonClicked(sender:UIButton)
{
    dispatch_async(dispatch_get_main_queue(), {

        if isHighLighted == false{
            sender.highlighted = true;
            isHighLighted = true
        }else{
            sender.highlighted = false;
            isHighLighted = false
        }
     });
}

button.setShowsTouchWhenHighlighted(true)

为此,您应该将 UIButtonType.Custom 更改为 UIButtonType.System

let button = UIButton(type: UIButtonType.System)

button.setImage(UIImage(named: "user.png"), forState: UIControlState.Normal)
button.setImage(UIImage(named: "user_clicked.png"), forState: UIControlState.Highlighted)
button.addTarget(self, action: nil, forControlEvents: UIControlEvents.TouchUpInside)
button.frame = CGRectMake(0, 0, 28, 30)

let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton

编辑

更新为 Swift 2.0