Swift:按下后更改按钮颜色

Ty *_*ess 5 iphone button ios swift

我正在尝试将我的iPhone制作一个基本的应用程序.我是Xcode的新手,我在google上浏览过,无法找到我正在寻找的内容.我正试图为我的飞机制作一份清单.

我基本上有一个带有几个按钮的View控制器.我想要的是按钮在按下后从灰色变为蓝色并保持蓝色,除非再次按下.我根本不了解Xcode和Swift语言,所以如果有人可以提供帮助,请解释好像你正在向孩子解释.

到目前为止,我已经设法让页面全部设置和滚动工作,但我只需要按钮即可更改.

Ty先生,谢谢你.

小智 7

这很简单.

首先,您将首先在ViewDidLoad()方法中设置按钮的背景颜色.在此之前,您应该已经为按钮设置了IBOutlet.在我的例子中,我只是将插座命名为通用的"按钮".

您的IBOutlet将是:

@IBOutlet weak var button:UIButton!
Run Code Online (Sandbox Code Playgroud)

不要忘记将插座连接到按钮上!

接下来,在ViewDidLoad中将按钮的背景图像设置为灰色,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    button.backgroundColor = UIColor.grayColor()
}
Run Code Online (Sandbox Code Playgroud)

这应该为您的按钮提供一般的灰色背景.如果您想要更多地控制实际颜色,可以替换button.backgroundColor = UIColor.grayColor()button.backgroundColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat),用您选择的值替换"CGFloat".

接下来,更改按钮颜色的实际代码:

进行IBAction并将其连接到按钮.我叫:

@IBAction func buttonTapped(sender: AnyObject) {}
Run Code Online (Sandbox Code Playgroud)

您的条件是,如果按钮是灰色的,它应该在蓝色时变为蓝色,如果它是蓝色,那么它应该变为灰色.

因此,在我们刚刚定义的IBAction中,您将添加一个If语句,如下所示:

@IBAction func buttonTapped(sender: AnyObject) {
    if button.backgroundColor == UIColor.grayColor() {
        button.backgroundColor = UIColor.blueColor()
    }
    else if button.backgroundColor == UIColor.blueColor() {
        button.backgroundColor = UIColor.grayColor()
    }
}
Run Code Online (Sandbox Code Playgroud)

这个if语句的作用是,如果按钮的背景颜色为灰色,则将其设置为蓝色,或者如果背景颜色为蓝色,则将其设置为灰色.您可以根据需要更换UIColor.BlueColor()UIColor.GrayColor()更加个性化UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat).

编辑:如果您只想更改按钮的文本颜色,只需在所需位置添加此语句或其变体:

button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected)
Run Code Online (Sandbox Code Playgroud)


s1d*_*dok 5

使用 UIButton 类的这个方法

func setTitleColor(_ color: UIColor?,
          forState state: UIControlState)
Run Code Online (Sandbox Code Playgroud)

您正在寻找的状态是 .Selected

当然,您必须自己处理选定状态,因为切换按钮不是本机行为。