swift 无法将图片内容中的图片恢复为原始大小

0kjbasz6  于 2023-09-30  发布在  Swift
关注(0)|答案(1)|浏览(98)

我有一个按钮,它提出了AVPlayerViewController和我设法添加图片在pciture到我的AVPlayerViewController,所以我可以最小化它,现在一旦最小化,我想最大化它再次,但只要我这样做的AVPlayerViewController消失。我不打算使用故事板,我想通过编程来实现,因为在导航控制器中嵌入视图控制器可以解决这个问题,但我不想遵循这种方法
我添加了BackgroundMode功能,并在Appdelegate中勾选了PIP

  1. func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  2. // Override point for customization after application launch.
  3. let audioSession = AVAudioSession.sharedInstance()
  4. do {
  5. try audioSession.setCategory(.playback)
  6. try audioSession.setActive(true, options: [])
  7. } catch {
  8. print("Setting category to AVAudioSessionCategoryPlayback failed.")
  9. }
  10. return true
  11. }

我的ViewController

  1. class ViewController: UIViewController,AVPlayerViewControllerDelegate {
  2. var playerController : AVPlayerViewController!
  3. override func viewDidLoad() {
  4. super.viewDidLoad()
  5. }
  6. @IBAction func btnClicked(_ sender: Any) {
  7. if let videoURL = URL(string: "https://storage.googleapis.com/exoplayer-test-media-0/BigBuckBunny_320x180.mp4") {
  8. let player = AVPlayer(url: videoURL)
  9. playerController = AVPlayerViewController()
  10. NotificationCenter.default.addObserver(self, selector: #selector(ViewController.didfinishPlaying(note:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
  11. playerController.player = player
  12. playerController.allowsPictureInPicturePlayback = true
  13. playerController.delegate = self
  14. playerController.player?.play()
  15. self.present(playerController, animated: true, completion : nil)
  16. }
  17. }
  18. }

只是为了创建一个简单的演示,我使用了storyboard,在我真实的的应用程序中我不使用它

sz81bmfz

sz81bmfz1#

  1. import UIKit
  2. import AVKit
  3. import AVFoundation
  4. class ViewController: UIViewController,AVPlayerViewControllerDelegate {
  5. let playerController = AVPlayerViewController()
  6. override func viewDidLoad() {
  7. super.viewDidLoad()
  8. playerController.delegate = self
  9. }
  10. @IBAction func btnClicked(_ sender: Any) {
  11. if let videoURL = URL(string: "https://storage.googleapis.com/exoplayer-test-media-0/BigBuckBunny_320x180.mp4") {
  12. let player = AVPlayer(url: videoURL)
  13. playerController.player = player
  14. playerController.allowsPictureInPicturePlayback = true
  15. playerController.delegate = self
  16. playerController.player?.play()
  17. self.present(playerController, animated: true, completion : nil)
  18. }
  19. }
  20. func playerViewController(_ playerViewController: AVPlayerViewController, restoreUserInterfaceForPictureInPictureStopWithCompletionHandler completionHandler: @escaping (Bool) -> Void) {
  21. self.present(playerViewController, animated: true) {
  22. completionHandler(true)
  23. }
  24. }
  25. }

上面的代码在没有NavigationController的情况下也可以工作

展开查看全部

相关问题