【초보자용】Swift3로 폭속 코딩 그 5(사운드와 델리게이트)
5748 단어 iOSSwift3.0Xcode8Swiftplayground
첫 분은 아래를 참고하십시오.
제1회: 【초보자용】Swift3로 폭속 코딩 그 1(화면 작성과 Snippets의 사용법)
제2회: 【초보자용】Swift3로 폭속 코딩 그 2(UIView와 문자 표시)
제3회: 【초보자용】Swift3로 폭속 코딩 그 3(버튼 클릭과 이벤트)
제4회: 【초보자용】Swift3로 폭속 코딩 그 4(화상과 애니메이션)
소스 코드
이번의 모든 소스 코드입니다.
import UIKit
import AVFoundation
class ViewController: UIViewController,AVAudioPlayerDelegate {
var audioPlayer : AVAudioPlayer!
var button : UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// 再生する音源のURLを生成
let soundFilePath : String = Bundle.main.path(forResource: "sound", ofType: "mp3")!
let fileURL : URL = URL(fileURLWithPath: soundFilePath)
do{
// AVAudioPlayerのインスタンス化
audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
}
catch{
}
//ボタンの生成
button = UIButton()
button.frame = CGRect(x:0,y:0,width:100, height:30)
button.setTitle("▶︎", for: UIControlState.normal)
button.setTitleColor(UIColor.black, for: .normal)
button.backgroundColor = UIColor.green
button.layer.masksToBounds = true
button.layer.cornerRadius = 10.0
self.view.addSubview(button)
button.addTarget(self, action: #selector(self.onClick(_:)), for: UIControlEvents.touchUpInside)
}
// ボタンがタップされた時に呼ばれるメソッド
func onClick(_ sender: UIButton) {
// playingプロパティがtrueであれば音源再生中
if audioPlayer.isPlaying == true {
// audioPlayerを一時停止
audioPlayer.pause()
sender.setTitle("▶︎", for: .normal)
} else {
// audioPlayerの再生
audioPlayer.play()
sender.setTitle("■", for: .normal)
}
}
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
print("Music Finish")
// 再度myButtonを"▶︎"に設定
button.setTitle("▶︎", for: .normal)
}
// デコード中にエラーが起きた時に呼ばれるメソッド
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?) {
print("Error")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
let viewController = ViewController()
viewController.view.backgroundColor = UIColor.white
import PlaygroundSupport
PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true
미리보기
재생 버튼을 누르면 사운드를 재생합니다.
대리자
delegate는 처리를 양도하는 기능입니다.
개념적으로는 Java와의 인터페이스에 가깝습니다.
delegate를 상속한 클래스는 delegate 메서드를 구현해야 합니다. (optional 메서드는 구현 선택 사항입니다)
이번에는 AVAudioPlayer 클래스의 이벤트 처리를 위해 AVAudioPlayerDelegate를 사용합니다.
class ViewController: UIViewController,AVAudioPlayerDelegate {
ViewDidLoad에서 대리자를 설정합니다.
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
이번에는 audioPlayerDidFinishPlaying 메서드와 audioPlayerDecodeErrorDidOccur 메서드를 구현합니다.
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
// デコード中にエラーが起きた時に呼ばれるメソッド
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?)
소리
사운드 주변의 라이브러리를 사용하려면 AVFoundation 프레임워크를 가져옵니다.
import AVFoundation
사운드 파일(sound.mp3)을 추가합니다.
적절한 사운드 파일을 준비하십시오.
추가 방법은 이미지와 동일하므로 제 4 회를 참조하십시오
사운드 파일을 로드합니다.
// 再生する音源のURLを生成
let soundFilePath : String = Bundle.main.path(forResource: "sound", ofType: "mp3")!
let fileURL : URL = URL(fileURLWithPath: soundFilePath)
do{
// AVAudioPlayerのインスタンス化
audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
}
catch{
}
버튼을 누르면 onClick 메서드가 호출되고,
사운드를 재생합니다. 재생중이라면 일시정지가 됩니다.
버튼과 컨트롤의 이벤트 처리에 관해서는 제3회를 참고해 주세요
// playingプロパティがtrueであれば音源再生中
if audioPlayer.isPlaying == true {
// audioPlayerを一時停止
audioPlayer.pause()
sender.setTitle("▶︎", for: .normal)
} else {
// audioPlayerの再生
audioPlayer.play()
sender.setTitle("■", for: .normal)
}
재생이 끝나면 대리자의 메서드가 콜백됩니다.
델리게이트의 메소드는 이렇게 콜백 메소드가 대부분입니다.
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
Reference
이 문제에 관하여(【초보자용】Swift3로 폭속 코딩 그 5(사운드와 델리게이트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teradonburi/items/274f9f669e7a79fc53a4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
import AVFoundation
class ViewController: UIViewController,AVAudioPlayerDelegate {
var audioPlayer : AVAudioPlayer!
var button : UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// 再生する音源のURLを生成
let soundFilePath : String = Bundle.main.path(forResource: "sound", ofType: "mp3")!
let fileURL : URL = URL(fileURLWithPath: soundFilePath)
do{
// AVAudioPlayerのインスタンス化
audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
}
catch{
}
//ボタンの生成
button = UIButton()
button.frame = CGRect(x:0,y:0,width:100, height:30)
button.setTitle("▶︎", for: UIControlState.normal)
button.setTitleColor(UIColor.black, for: .normal)
button.backgroundColor = UIColor.green
button.layer.masksToBounds = true
button.layer.cornerRadius = 10.0
self.view.addSubview(button)
button.addTarget(self, action: #selector(self.onClick(_:)), for: UIControlEvents.touchUpInside)
}
// ボタンがタップされた時に呼ばれるメソッド
func onClick(_ sender: UIButton) {
// playingプロパティがtrueであれば音源再生中
if audioPlayer.isPlaying == true {
// audioPlayerを一時停止
audioPlayer.pause()
sender.setTitle("▶︎", for: .normal)
} else {
// audioPlayerの再生
audioPlayer.play()
sender.setTitle("■", for: .normal)
}
}
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
print("Music Finish")
// 再度myButtonを"▶︎"に設定
button.setTitle("▶︎", for: .normal)
}
// デコード中にエラーが起きた時に呼ばれるメソッド
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?) {
print("Error")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
let viewController = ViewController()
viewController.view.backgroundColor = UIColor.white
import PlaygroundSupport
PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true
재생 버튼을 누르면 사운드를 재생합니다.
대리자
delegate는 처리를 양도하는 기능입니다.
개념적으로는 Java와의 인터페이스에 가깝습니다.
delegate를 상속한 클래스는 delegate 메서드를 구현해야 합니다. (optional 메서드는 구현 선택 사항입니다)
이번에는 AVAudioPlayer 클래스의 이벤트 처리를 위해 AVAudioPlayerDelegate를 사용합니다.
class ViewController: UIViewController,AVAudioPlayerDelegate {
ViewDidLoad에서 대리자를 설정합니다.
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
이번에는 audioPlayerDidFinishPlaying 메서드와 audioPlayerDecodeErrorDidOccur 메서드를 구현합니다.
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
// デコード中にエラーが起きた時に呼ばれるメソッド
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?)
소리
사운드 주변의 라이브러리를 사용하려면 AVFoundation 프레임워크를 가져옵니다.
import AVFoundation
사운드 파일(sound.mp3)을 추가합니다.
적절한 사운드 파일을 준비하십시오.
추가 방법은 이미지와 동일하므로 제 4 회를 참조하십시오
사운드 파일을 로드합니다.
// 再生する音源のURLを生成
let soundFilePath : String = Bundle.main.path(forResource: "sound", ofType: "mp3")!
let fileURL : URL = URL(fileURLWithPath: soundFilePath)
do{
// AVAudioPlayerのインスタンス化
audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
}
catch{
}
버튼을 누르면 onClick 메서드가 호출되고,
사운드를 재생합니다. 재생중이라면 일시정지가 됩니다.
버튼과 컨트롤의 이벤트 처리에 관해서는 제3회를 참고해 주세요
// playingプロパティがtrueであれば音源再生中
if audioPlayer.isPlaying == true {
// audioPlayerを一時停止
audioPlayer.pause()
sender.setTitle("▶︎", for: .normal)
} else {
// audioPlayerの再生
audioPlayer.play()
sender.setTitle("■", for: .normal)
}
재생이 끝나면 대리자의 메서드가 콜백됩니다.
델리게이트의 메소드는 이렇게 콜백 메소드가 대부분입니다.
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
Reference
이 문제에 관하여(【초보자용】Swift3로 폭속 코딩 그 5(사운드와 델리게이트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teradonburi/items/274f9f669e7a79fc53a4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ViewController: UIViewController,AVAudioPlayerDelegate {
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
// デコード中にエラーが起きた時に呼ばれるメソッド
func audioPlayerDecodeErrorDidOccur(_ player: AVAudioPlayer, error: Error?)
사운드 주변의 라이브러리를 사용하려면 AVFoundation 프레임워크를 가져옵니다.
import AVFoundation
사운드 파일(sound.mp3)을 추가합니다.
적절한 사운드 파일을 준비하십시오.
추가 방법은 이미지와 동일하므로 제 4 회를 참조하십시오
사운드 파일을 로드합니다.
// 再生する音源のURLを生成
let soundFilePath : String = Bundle.main.path(forResource: "sound", ofType: "mp3")!
let fileURL : URL = URL(fileURLWithPath: soundFilePath)
do{
// AVAudioPlayerのインスタンス化
audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
// AVAudioPlayerのデリゲートをセット
audioPlayer.delegate = self
}
catch{
}
버튼을 누르면 onClick 메서드가 호출되고,
사운드를 재생합니다. 재생중이라면 일시정지가 됩니다.
버튼과 컨트롤의 이벤트 처리에 관해서는 제3회를 참고해 주세요
// playingプロパティがtrueであれば音源再生中
if audioPlayer.isPlaying == true {
// audioPlayerを一時停止
audioPlayer.pause()
sender.setTitle("▶︎", for: .normal)
} else {
// audioPlayerの再生
audioPlayer.play()
sender.setTitle("■", for: .normal)
}
재생이 끝나면 대리자의 메서드가 콜백됩니다.
델리게이트의 메소드는 이렇게 콜백 메소드가 대부분입니다.
// 音楽再生が成功した時に呼ばれるメソッド
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
Reference
이 문제에 관하여(【초보자용】Swift3로 폭속 코딩 그 5(사운드와 델리게이트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teradonburi/items/274f9f669e7a79fc53a4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)