Ios 加载uiview时出现黑屏

Ios 加载uiview时出现黑屏,ios,swift,uiviewcontroller,avplayer,Ios,Swift,Uiviewcontroller,Avplayer,我遇到的问题是当我加载这个 UIViewController.removeSpinner(微调器:self.view) 它给了我一个空白的黑色视图,我不知道如何通过按钮函数访问sv变量: 设sv=UIViewController.displaySpinner(onView:self.view) 我用这个消光器来加载微调器并移除 我真正想做的是: 1-获取语音消息的url 2-运行旋转器加载播放器 3-玩 4-如果观察者发现微调器已结束,则移除微调器 这是我的密码: @IBAction fun

我遇到的问题是当我加载这个 UIViewController.removeSpinner(微调器:self.view)

它给了我一个空白的黑色视图,我不知道如何通过按钮函数访问sv变量:

设sv=UIViewController.displaySpinner(onView:self.view)

我用这个消光器来加载微调器并移除

我真正想做的是:

1-获取语音消息的url

2-运行旋转器加载播放器

3-玩

4-如果观察者发现微调器已结束,则移除微调器

这是我的密码:

 @IBAction func vnClick(_ sender: UIButton) {
    let vnInfo = itemss[sender.tag]
    print(vnInfo.vnUrl)
    let sv = UIViewController.displaySpinner(onView: self.view)
    if let url = NSURL(string: vnInfo.vnUrl) {
        player = AVPlayer(url: url as URL)
        player.play()
        //check if ended playing to remove spinner
        NotificationCenter.default.addObserver(self,  selector:#selector(playerDidFinishPlaying(note:)),name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)


    }
}
@objc func playerDidFinishPlaying(note: NSNotification) {
    UIViewController.removeSpinner(spinner: self.view)
}

你可能应该做一些更像

private var sv : UIView?
 @IBAction func vnClick(_ sender: UIButton) {
    let vnInfo = itemss[sender.tag]
    print(vnInfo.vnUrl)
    sv = UIViewController.displaySpinner(onView: self.view)
    if let url = NSURL(string: vnInfo.vnUrl) {
        player = AVPlayer(url: url as URL)
        player.play()
        //check if ended playing to remove spinner
        NotificationCenter.default.addObserver(self,  selector:#selector(playerDidFinishPlaying(note:)),name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
    }
}

@objc func playerDidFinishPlaying(note: NSNotification) {
    if let sv = sv {
        UIViewController.removeSpinner(spinner: sv) 
    }
}

您的错误是在此处传递self.view,这将删除该视图

UIViewController.removeSpinner(微调器:self.view)在PlayerIDfinishPlaying()中

你需要这样做,把spinnerview对象放到按钮外,点击

var spinnerView: UIView!
然后分配,

spinnerView = UIViewController.displaySpinner(onView: self.view)
删除时,传递spinnerview not self.view

UIViewController.removeSpinner(spinner: self.spinnerView)
代码将是这样的

@IBAction func vnClick(_ sender: UIButton) {
let vnInfo = itemss[sender.tag]
print(vnInfo.vnUrl)
spinnerView = UIViewController.displaySpinner(onView: self.view)
if let url = NSURL(string: vnInfo.vnUrl) {
    player = AVPlayer(url: url as URL)
    player.play()
    //check if ended playing to remove spinner
    NotificationCenter.default.addObserver(self,  selector:#selector(playerDidFinishPlaying(note:)),name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
}
}

@objc func playerDidFinishPlaying(note: NSNotification) {
    UIViewController.removeSpinner(spinner: self.spinnerView)
}

var spinnerView=UIView()
创建空视图是无用的,而且会消耗CPU。创建选项;变量