У меня есть простой медиаплеер, и я пытаюсь заставить его изменить изображение обложки при изменении песен.С кодом, который у меня есть сейчас, он будет отображать обложку, когда вы нажмете кнопку воспроизведения, но когда я нажму следующую кнопку, чтобы перейти к следующему элементу, он останется прежним, если вы не нажмете другую кнопку.
Как изменить изображение UIImageView при изменении элемента мультимедиа песни?
import UIKit
import MediaPlayer
class ViewController: UIViewController {
@IBOutlet weak var coverImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
createQueue()
}
func showArt(){
coverImageView.image =
myMediaPlayer.nowPlayingItem?.artwork!.image(at: CGSize.init(width: 500, height: 500))
coverImageView.isUserInteractionEnabled = true
}
@IBAction func playButton(_ sender: UIButton) {
togglePlay(on: sender)
showArt()
}
@IBAction func backButton(_ sender: UIButton) {
back()
}
@IBAction func nextButton(_ sender: UIButton) {
skip()
}
}
Другие мои функции:
import MediaPlayer
let myMediaPlayer = MPMusicPlayerApplicationController.systemMusicPlayer
let playDrake = MPMediaPropertyPredicate(value: "Drake", forProperty: MPMediaItemPropertyArtist, comparisonType: MPMediaPredicateComparison.equalTo)
let myFilterSet: Set<MPMediaPropertyPredicate> = [playDrake]
func createQueue() {
let drakeQuery = MPMediaQuery(filterPredicates: myFilterSet)
myMediaPlayer.setQueue(with: drakeQuery)
}
func skip() {
myMediaPlayer.skipToNextItem()
}
func back() {
if myMediaPlayer.currentPlaybackTime > 0.05 {
myMediaPlayer.skipToPreviousItem()
} else if myMediaPlayer.currentPlaybackTime < 0.05 {
myMediaPlayer.skipToBeginning()
} else {
//do nothing
}
}
func togglePlay(on: UIButton) {
if myMediaPlayer.playbackState.rawValue == 2 || myMediaPlayer.playbackState.rawValue == 0 {
on.setTitle("Pause", for: UIControlState.normal)
myMediaPlayer.play()
} else if myMediaPlayer.playbackState.rawValue == 1{
on.setTitle("Play", for: UIControlState.normal)
myMediaPlayer.pause()
} else {
// do nothing
}
}