在swift中使用present时如何阻止ViewController闪烁
Posted
技术标签:
【中文标题】在swift中使用present时如何阻止ViewController闪烁【英文标题】:How do i stop ViewController from flickering when using present in swift 【发布时间】:2020-04-21 14:41:29 【问题描述】:我对 swift 非常陌生,我在创建项目时遇到了麻烦。我有两个视图控制器,其中一个带有一个按钮,按下时可以播放视频。当视频结束时,我的代码会自动将其带到新的视图控制器。但是你可以(一毫秒)看到原始的视图控制器。我已经关闭了所有动画,但我仍然可以看到它。有没有办法阻止这种情况?我是否以错误的方式构建项目?正如我所说,我是 swift 新手,对 html 和 CSS 了解不多,因此非常感谢任何帮助。
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController
let playerViewController = AVPlayerViewController()
override func viewDidLoad()
super.viewDidLoad()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
@IBAction func playButton(_ sender: AnyObject)
let movieURL = Bundle.main.url(forResource: "video", withExtension: "mp4")!
let player = AVPlayer(url: movieURL as URL)
playerViewController.player = player
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerViewController.player?.currentItem)
self.present(playerViewController, animated: false)
self.playerViewController.player!.play()
@objc func playerDidFinishPlaying(note: NSNotification)
self.playerViewController.dismiss(animated: false)
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let secondVC = storyBoard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
self.present(secondVC, animated:false)
【问题讨论】:
【参考方案1】:如果你的意思是它不采取全屏。从 ios 13 开始,默认演示不是全屏。因此,您需要使用 UIModalPresentationFullScreen 设置 modalPresentationStyle
UIViewController 的属性。
代替:
self.present(secondVC, animated:false)
使用:
secondVC.modalPresentationStyle = .fullScreen self.present(secondVC, animated:false)
【讨论】:
感谢您提供的非常有用的提示。当您从第一个视图控制器和第二个视图控制器转换时,您知道如何停止闪烁吗? 不客气。我们应该编辑secondVC
的modalPresentationStyle
属性而不是playerViewController
。
@user2655836 如果它是您问题的正确答案,请将其标记为正确答案。
感谢您的回复,但闪烁仍然存在,因此问题/问题没有解决。如果您有任何想法,请告诉我。
设置modalPresentationStyle
属性决定了将要呈现的视图控制器的呈现风格。因此,要在过渡到 secondVC 时停止闪烁,请将 secondVC
的 modalPresentationStyle
设置为 .fullScreen
以上是关于在swift中使用present时如何阻止ViewController闪烁的主要内容,如果未能解决你的问题,请参考以下文章
如何阻止 Swift 在我的 [String] 中注入转义的单引号?