Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImageView图像随歌曲的不同而变化_Ios_Swift_Media Player - Fatal编程技术网

Ios UIImageView图像随歌曲的不同而变化

Ios UIImageView图像随歌曲的不同而变化,ios,swift,media-player,Ios,Swift,Media Player,我有一个简单的媒体播放器,我试图让它随着歌曲的变化而改变图片。使用我现在的代码,当你点击play时,它将显示艺术品,但当我点击next按钮跳到下一个项目时,它将保持不变,除非你点击另一个按钮 如何使UIImageView图像随着歌曲媒体项的更改而更改 import UIKit import MediaPlayer class ViewController: UIViewController { @IBOutlet weak var coverImageView: UIImageView

我有一个简单的媒体播放器,我试图让它随着歌曲的变化而改变图片。使用我现在的代码,当你点击play时,它将显示艺术品,但当我点击next按钮跳到下一个项目时,它将保持不变,除非你点击另一个按钮

如何使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
        }
    }
导入MediaPlayer
让myMediaPlayer=MPMusicLayerApplicationController.SystemMusicLayer
让playDrake=MPMediaPropertyPredicate(值:“Drake”,forProperty:MPMediaItemPropertyAttribute,comparisonType:MPMediaPredicateComparison.equalTo)
让myFilterSet:Set=[playDrake]
func createQueue(){
让drakeQuery=MPMediaQuery(filterPredicates:myFilterSet)
myMediaPlayer.setQueue(带:drakeQuery)
}
func skip(){
myMediaPlayer.skipToNextItem()
}
func back(){
如果myMediaPlayer.currentPlaybackTime>0.05{
myMediaPlayer.skipToPreviousItem()的名称
}否则,如果myMediaPlayer.currentPlaybackTime<0.05{
myMediaPlayer.skiptobeging()
}否则{
//无所事事
}
}
func togglePlay(打开:UIButton){
如果myMediaPlayer.playbackState.rawValue==2 | | myMediaPlayer.playbackState.rawValue==0{
on.setTitle(“暂停”,用于:uicontrol状态.normal)
myMediaPlayer.play()
}如果myMediaPlayer.playbackState.rawValue==1,则为else{
on.setTitle(“播放”,用于:uicontrol状态.normal)
myMediaPlayer.pause()
}否则{
//无所事事
}
}

尝试异步加载映像

DispatchQueue.global(qos: .background).async {
    myMediaPlayer.nowPlayingItem?.artwork!.image(at: CGSize.init(width: 500, height: 500))
}

您是否尝试过将
showArt()
添加到下一步和后退操作中?您的
skip
函数定义在哪里?您应该像@kbunarjo questions一样显示skip和后退()。@MwcsMac我刚刚添加了其他函数。任何帮助都将不胜感激@我刚刚添加了其他函数。任何帮助都将不胜感激!我在原来的帖子中添加了我的支持功能。我会将该代码添加到视图控制器还是其他地方?