点击时如何反复更改按钮?
How to change button repeatedly when tapped?
使用 Swift,我该如何制作:
- 带有文字 "start" 的按钮,点击后会变为 "pause",反之亦然?不只是一次,而是可以无限次做? (例如在秒表应用中)
- 点击时在 2 个图像之间切换的自定义图像按钮,也可以无限完成(点击和更改)?
在按钮的@IBAction 中(假设您使用的是故事板),您可以将按钮的标题或图像更改为您想要的。您还可以检查标题或图像,并根据您所拥有的执行操作。
@IBAction func pressbutton(sender: UIButton) {
switch sender.titleLabel?.text {
case "Play":
play()
case "Pause":
pause()
default:
other()
}
sender.titleLabel?.text = "Whatever you want"
}
或者图像(假设你有一个 images
数组存储图像,你应该这样做):
@IBAction func pressbutton(sender: UIButton) {
switch sender.imageView!.image! {
case images[0]:
play()
case images[1]:
pause()
default:
other()
}
sender.imageView?.image = UIImage(...)
}
在故事板中,将 Default 状态标题设置为 "Start",将 Selected 状态标题设置为 "Pause"
或者,如果您在代码中这样做:
startPauseButton.setTitle("Start", forState: .Normal)
startPauseButton.setTitle("Pause", forState: .Selected)
在您的 IBAction func
中,在 true
和 false
之间切换 button.selected
属性
@IBAction func toggleStopwatch(button:UIButton) {
if button.selected {
// Pause the stopwatch
} else {
// Start the stopwatch
}
button.selected = !button.selected
}
您还可以为不同的状态设置不同的图像:默认、突出显示、已选择 , 已禁用
试试这个....
@IBAction func btnStopWatch(sender: UIButton) {
if btnStopWatch.selected == true {
btnStopWatch.setTitle("stop", forState: UIControlState.Normal)
btnStopWatch.setImage(stopImage, forState: UIControlState.Normal)
btnStopWatch.selected = false
} else {
btnStopWatch.setTitle("start", forState: UIControlState.Normal)
btnStopWatch.setImage(startImage, forState: UIControlState.Normal)
btnStopWatch.selected = true
}
}
步骤 1: 创建布尔变量
var isPlaying:Bool = false
第 2 步: 使用此 IBAction 方法连接您的按钮:
@IBAction func btnStartStop(sender: UIButton) {
if isPlaying{
isPlaying = false
sender.setTitle("Pause", forState: UIControlState.Normal)
sender.setImage(pauseImage, forState: .Normal)
//Pause Stopwatch
}
else{
isPlaying = true
sender.setTitle("Play", forState: UIControlState.Normal)
sender.setImage(playImage, forState: .Normal)
//Play Stopwatch
}
}
#1。切换 UIButton
标题
对于Swift3,UIButton
有一个方法叫做setTitle(_:for:)
。 setTitle(_:for:)
有以下声明:
func setTitle(_ title: String?, for state: UIControlState)
Sets the title to use for the specified state.
以下 Playground 代码展示了如何使用 setTitle(_:for:)
来根据按钮的状态切换按钮的标题:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
let button = UIButton(type: UIButtonType.system)
button.addTarget(self, action: #selector(toggle(sender:)), for: UIControlEvents.touchUpInside)
// Set button's states
button.setTitle("Start", for: UIControlState.normal)
button.setTitle("Pause", for: UIControlState.selected)
// set layout
view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = button.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let verticalConstraint = button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint])
}
/// trigger action when button is tapped
func toggle(sender: UIButton) {
sender.isSelected = !sender.isSelected
print("Button state: \(sender.isSelected)")
}
}
let vc = ViewController()
PlaygroundPage.current.liveView = vc
使用 View > Assistant Editor > Show Assistant Editor[=] 在 Playground Assistant Editor 中预览视图控制器
#2。切换 UIButton
图片
UIButton
有一个名为 setImage(_:for:)
的方法。 setImage(_:for:)
有以下声明:
func setImage(_ image: UIImage?, for state: UIControlState)
Sets the image to use for the specified state.
以下 Playground 代码展示了如何使用 setImage(_:for:)
来根据按钮的状态切换按钮的标题:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
let button = UIButton()
button.addTarget(self, action: #selector(toggle(sender:)), for: UIControlEvents.touchUpInside)
// Set button's states
button.setImage(UIImage(named: "on.png"), for: UIControlState.normal)
button.setImage(UIImage(named: "off.png"), for: UIControlState.selected)
// set layout
view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = button.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let verticalConstraint = button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
let heightConstraint = button.heightAnchor.constraint(equalToConstant: 100)
let widthConstraint = button.widthAnchor.constraint(equalToConstant: 100)
NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, heightConstraint, widthConstraint])
}
/// trigger action when button is tapped
func toggle(sender: UIButton) {
sender.isSelected = !sender.isSelected
print("Button state: \(sender.isSelected)")
}
}
let vc = ViewController()
PlaygroundPage.current.liveView = vc
使用 View > Assistant Editor > Show Assistant Editor[=] 在 Playground Assistant Editor 中预览视图控制器
使用 Swift,我该如何制作:
- 带有文字 "start" 的按钮,点击后会变为 "pause",反之亦然?不只是一次,而是可以无限次做? (例如在秒表应用中)
- 点击时在 2 个图像之间切换的自定义图像按钮,也可以无限完成(点击和更改)?
在按钮的@IBAction 中(假设您使用的是故事板),您可以将按钮的标题或图像更改为您想要的。您还可以检查标题或图像,并根据您所拥有的执行操作。
@IBAction func pressbutton(sender: UIButton) {
switch sender.titleLabel?.text {
case "Play":
play()
case "Pause":
pause()
default:
other()
}
sender.titleLabel?.text = "Whatever you want"
}
或者图像(假设你有一个 images
数组存储图像,你应该这样做):
@IBAction func pressbutton(sender: UIButton) {
switch sender.imageView!.image! {
case images[0]:
play()
case images[1]:
pause()
default:
other()
}
sender.imageView?.image = UIImage(...)
}
在故事板中,将 Default 状态标题设置为 "Start",将 Selected 状态标题设置为 "Pause"
或者,如果您在代码中这样做:
startPauseButton.setTitle("Start", forState: .Normal)
startPauseButton.setTitle("Pause", forState: .Selected)
在您的 IBAction func
中,在 true
和 false
button.selected
属性
@IBAction func toggleStopwatch(button:UIButton) {
if button.selected {
// Pause the stopwatch
} else {
// Start the stopwatch
}
button.selected = !button.selected
}
您还可以为不同的状态设置不同的图像:默认、突出显示、已选择 , 已禁用
试试这个....
@IBAction func btnStopWatch(sender: UIButton) {
if btnStopWatch.selected == true {
btnStopWatch.setTitle("stop", forState: UIControlState.Normal)
btnStopWatch.setImage(stopImage, forState: UIControlState.Normal)
btnStopWatch.selected = false
} else {
btnStopWatch.setTitle("start", forState: UIControlState.Normal)
btnStopWatch.setImage(startImage, forState: UIControlState.Normal)
btnStopWatch.selected = true
}
}
步骤 1: 创建布尔变量
var isPlaying:Bool = false
第 2 步: 使用此 IBAction 方法连接您的按钮:
@IBAction func btnStartStop(sender: UIButton) {
if isPlaying{
isPlaying = false
sender.setTitle("Pause", forState: UIControlState.Normal)
sender.setImage(pauseImage, forState: .Normal)
//Pause Stopwatch
}
else{
isPlaying = true
sender.setTitle("Play", forState: UIControlState.Normal)
sender.setImage(playImage, forState: .Normal)
//Play Stopwatch
}
}
#1。切换 UIButton
标题
对于Swift3,UIButton
有一个方法叫做setTitle(_:for:)
。 setTitle(_:for:)
有以下声明:
func setTitle(_ title: String?, for state: UIControlState)
Sets the title to use for the specified state.
以下 Playground 代码展示了如何使用 setTitle(_:for:)
来根据按钮的状态切换按钮的标题:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
let button = UIButton(type: UIButtonType.system)
button.addTarget(self, action: #selector(toggle(sender:)), for: UIControlEvents.touchUpInside)
// Set button's states
button.setTitle("Start", for: UIControlState.normal)
button.setTitle("Pause", for: UIControlState.selected)
// set layout
view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = button.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let verticalConstraint = button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint])
}
/// trigger action when button is tapped
func toggle(sender: UIButton) {
sender.isSelected = !sender.isSelected
print("Button state: \(sender.isSelected)")
}
}
let vc = ViewController()
PlaygroundPage.current.liveView = vc
使用 View > Assistant Editor > Show Assistant Editor[=] 在 Playground Assistant Editor 中预览视图控制器
#2。切换 UIButton
图片
UIButton
有一个名为 setImage(_:for:)
的方法。 setImage(_:for:)
有以下声明:
func setImage(_ image: UIImage?, for state: UIControlState)
Sets the image to use for the specified state.
以下 Playground 代码展示了如何使用 setImage(_:for:)
来根据按钮的状态切换按钮的标题:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
let button = UIButton()
button.addTarget(self, action: #selector(toggle(sender:)), for: UIControlEvents.touchUpInside)
// Set button's states
button.setImage(UIImage(named: "on.png"), for: UIControlState.normal)
button.setImage(UIImage(named: "off.png"), for: UIControlState.selected)
// set layout
view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = button.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let verticalConstraint = button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
let heightConstraint = button.heightAnchor.constraint(equalToConstant: 100)
let widthConstraint = button.widthAnchor.constraint(equalToConstant: 100)
NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, heightConstraint, widthConstraint])
}
/// trigger action when button is tapped
func toggle(sender: UIButton) {
sender.isSelected = !sender.isSelected
print("Button state: \(sender.isSelected)")
}
}
let vc = ViewController()
PlaygroundPage.current.liveView = vc
使用 View > Assistant Editor > Show Assistant Editor[=] 在 Playground Assistant Editor 中预览视图控制器