Last active
May 22, 2021 22:46
-
-
Save aheze/5dc2be6f9bdfa5249ec4af960582b2b5 to your computer and use it in GitHub Desktop.
How to play custom audio on Swift Playgrounds for iPad, using SwiftUI. Replace "slow-spring-board" with the name of your audio file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import AVFoundation | |
import SwiftUI | |
import PlaygroundSupport | |
struct SwiftUIAudioPlayerView: View { | |
/// the audio player that will play your audio file. Can't be a local variable. | |
/// Must be a `@State` property because we need to modify it later | |
@State var audioPlayer: AVAudioPlayer? | |
var body: some View { | |
Button(action: { | |
self.playAudio() /// play audio when tapped | |
}) { | |
Text("Play Audio!") /// what the button looks like | |
} | |
} | |
func playAudio() { /// function to play audio | |
/// the URL of the audio file. | |
/// forResource = name of the file. | |
/// withExtension = extension, usually "mp3" | |
if let audioURL = Bundle.main.url(forResource: "slow-spring-board", withExtension: "mp3") { | |
do { | |
try self.audioPlayer = AVAudioPlayer(contentsOf: audioURL) /// make the audio player | |
self.audioPlayer?.numberOfLoops = 0 /// Number of times to loop the audio | |
self.audioPlayer?.play() /// start playing | |
} catch { | |
print("Couldn't play audio. Error: \(error)") | |
} | |
} else { | |
print("No audio file found") | |
} | |
} | |
} | |
let swiftuiAudioPlayerView = SwiftUIAudioPlayerView() | |
PlaygroundPage.current.setLiveView(swiftuiAudioPlayerView) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Before any of the code, you need to first have an audio file saved in the built-in Files app. Then, you must import it into your Swift Playgrounds project:
Then replace "slow-spring-board" with its name.
UIKit version