[英]Question about changing height of UIView when button is pressed in Swift
[英]My Question is about changing a UIImage when a button is pressed
因此,我对编码非常陌生,可以在Udemy上学习Swift 3。 我正在尝试通过构建一个包含3个声音文件的音乐应用程序来测试自己的技能,此刻我正在努力获取按下UIButton后应播放的当前歌曲的图像。 我创建了一个包含图像文件的数组,但是由于某种原因,它仅显示3张图像中的2张,并且不会继续前进,也不会让我循环显示图像,欢迎任何建议。
我尝试了一个for-in循环,这不是我目前想要的循环。 我正在尝试获取更新songImage的函数以接受我的数组并链接到sender.tag属性以遍历图像
class ViewController: UIViewController {
// Instance Variables
var playTheSong : AVAudioPlayer!
var imageArray = ["songImage1", "songImage2", "songImage3"]
var allSongNamesAndDescriptions = MusicClassBank()
var nextImage = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
albumArtwork.image = UIImage(named: "songImage3")
}
@IBAction func buttonPressed(_ sender: UIButton) {
updateSongImage(selectedImageFile: imageArray[sender.tag - 1])
nextImage = nextImage + 1
}
@IBOutlet weak var albumArtwork: UIImageView!
@IBOutlet weak var nameOfSong: UILabel!
@IBOutlet weak var songDescription: UILabel!
// Cycle through images upon button being pressed.
func updateSongImage(selectedImageFile : String) {
if nextImage <= 3 {
albumArtwork.image = UIImage(named: selectedImageFile)
}
else {
nextImage = 0
}
}
现在,代码仅显示视图加载时显示的图像以及数组中的下一个图像。 我不能让它遍历整个数组并在按下按钮时继续前进。
您正在使用“下一个” UIButton sender.tag
作为参数来更改图像,但是该标签永远不会更改。 所以:
viewDidLoad()
方法中,显示第三个图像 sender.tag
图像更新为1(可能sender.tag
为1) 您可以尝试如下操作:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
//Set the first image
updateSongImage(selectedImageFile : imageArray[0])
}
@IBAction func buttonPressed(_ sender: UIButton) {
//If nextImage is less than imageArray.count - 1 (because arrays start with 0), add one to nextImage. Else, nextImage return to zero
nextImage = nextImage < imageArray.count - 1 ? nextImage + 1 : 0
updateSongImage(selectedImageFile: imageArray[nextImage])
}
func updateSongImage(selectedImageFile : String) {
//Here we only need to update the image, because the if is outside
albumArtwork.image = UIImage(named: selectedImageFile)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.