我正在尝试为一些孩子制作一个简单的应用程序。我想要显示照片并将该照片链接到声音。
当孩子点击“播放声音”时,它应播放代表图像的音频。
到目前为止,我只展示了我在Assets.xcassets中放置的图像,但我的问题是...... 如何将这些照片链接到某些音频文件并通过单击“播放声音”播放它们
以下是我在ViewController.swift中的代码:
@IBOutlet weak var viewImage: UIImageView!
var images: [UIImage] = [
UIImage(named: "photo1.png")!,
UIImage(named: "photo2.png")!,
UIImage(named: "photo3.png")!,
UIImage(named: "photo4.png")!,
UIImage(named: "photo5.png")!,
UIImage(named: "photo6.png")!,
UIImage(named: "photo7.png")!,
UIImage(named: "photo8.png")!
]
var currentImagesIndex = 0
@IBAction func nextImage(_ sender: Any) {
currentImagesIndex += 1
let numberOfImages = images.count
let nextImagesIndex = currentImagesIndex % numberOfImages
viewImage.image = images[nextImagesIndex]
}
到目前为止,当我点击“下一张照片”时,它会显示一张新照片,并且工作正常。我现在想做的就是将“photo1-8”链接到音频并进行播放。
我会感激任何帮助, 拉杜
答案 0 :(得分:0)
import AVFoundation
使用此代码播放声音
func playSound() {
var btnSound: AVAudioPlayer!
if let audioFileURL = Bundle.main.url(forResource: "fileName", withExtension: ".wav") {
do{
try btnSound = AVAudioPlayer(contentsOf: audioFileURL)
btnSound.prepareToPlay()
btnSound.play()
} catch let err as NSError {
print(err.debugDescription)
}
}
}
//call playSound function inside nextImage method
在 xCode 8.3.2中 Swift 3.1 进行测试
答案 1 :(得分:0)
您应首先将所有声音文件添加到项目中。我假设你知道怎么做。添加文件后,您的项目导航器应该看起来像这样:
为方便起见,我会拨打您的8个声音文件sound1.mp3
,sound2.mp3
,sound3.mp3
... sound8.mp3
。
在名为soundFiles
的类中创建一个属性:
let soundFiles: [String] = [
"sound1",
"sound2",
"sound3",
"sound4",
"sound5",
"sound6",
"sound7",
"sound8"
]
还要创建一个名为player
的属性来播放声音:
var player: AVAudioPlayer!
在“播放声音”按钮的@IBAction
中,获取声音文件的文件路径并初始化播放器:
let numberOfImages = images.count
let nextImagesIndex = currentImagesIndex % numberOfImages
let soundFilePath = Bundle.main.url(forResource: soundFiles[nextImagesIndex], withExtension: ".mp3")!
player = try! AVAudioPlayer(contentsOf: soundFilePath)
然后您可以通过连续拨打prepareToPlay()
和play()
播放声音:
player.prepareToPlay()
player.play()