在 iOS 13 中以模态呈现 UIViewControllers 时,我有一个奇怪的行为。我在 iOS 13 中看到的新呈现样式如下所示:
呈现视图控制器出现在呈现视图控制器的后面。它也向下移动以模仿“堆栈”
同时,当通过我的应用程序呈现视图控制器时,我不断得到这种效果:
呈现新的视图控制器时,呈现的视图控制器根本不会移动
我使用此代码来呈现此视图控制器:
let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
这是我的问题: 我想知道为什么会发生这种情况,以及是否有办法以正常的 iOS 13 样式呈现视图控制器(呈现视图控制器向后移动)。
提前致谢!
我真的很想找出解决办法,并且在互联网上看了都没找到答案。如您所知,Spotify和Apple Music本身的音乐应用程序使用户即使在收听歌曲时也可以重新排列上一个队列。我还无法弄清楚该怎么做。我希望能够完全重新排列队列,包括在上一个队列中添加,删除和移动歌曲。我尝试了各种方法,例如
musicPlayer.setQueue([queue])
Run Code Online (Sandbox Code Playgroud)
但这需要我调用musicPlayer.prepareToPlay()后记以更新队列,该队列将结束当前歌曲并启动新队列。
我也尝试过使用
musicPlayer.perform(queueTransaction: { (currentQueue) in
let oldItems = currentQueue.items
var currentItem: MPMediaItem? = nil
for (i, item) in oldItems.enumerated() {
if i == musicPlayer.indexOfNowPlayingItem {
currentItem = item
continue
}
currentQueue.remove(item)
}
currentQueue.insert(queue, after: currentItem)
}, completionHandler: { (newQueue, error) in
if let error = error {
print("there was an error updating the queue", error)
return
}
print("=== NEW QUEUE ===") //insert does not work
for item in newQueue.items {
print(" -", item.title ?? …Run Code Online (Sandbox Code Playgroud)