WKWebView 애니메이션 재생 정보 ~ U I W i n d o w D i dBecome Hidden Notification ~

이번에 처음으로 WKWebView를 사용해서 영상이 나왔습니다!
그래서 내가 가장 고민하는 것은:
"WebView를 닫을 때 UIImageView에 고정 이미지를 표시합니다."

실현하고자 하는 내용


기능 프로세스는 다음과 같습니다.
① 그림(분홍색 그림)의 재생 단추를 누르면 애니메이션을 재생합니다
② WebView를 전체 화면으로 표시
③ WebView의×단추를 눌렀을 때 첫 번째 그림과 리셋 단추를 표시합니다
완성품 영상!

설치 내용


① WebView 구성 결정


  private var webView: WKWebView!

  @IBOutlet var webViewContainer: UIImageView!

  override func viewDidLoad() {
    super.viewDidLoad()
    webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
    webView.allowsBackForwardNavigationGestures = true

② 동작 방법에 지정된 웹 페이지 읽기


@IBAction func playButtonAction(_ sender: UIButton) {
    guard let url = URL(string: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8") else {
      return
    }
    let urlRequest = URLRequest(url: url)
    webView.load(urlRequest)
    self.view.addSubview(webView)
  }
참고로 다른 사람의 보도를 보면 대부분viewDidLoad()로 페이지webView.load(urlRequest)를 읽는다.
이번 웹뷰가 꺼진 후 동영상이 처음부터 재생될 수 있도록 동작 방법 내에서 페이지를 읽었다.

③ WebView를 닫은 후 이미지 표시


여기까지 오기 전에 힘들었어요.💦
vieDidliad() 내
// スクリーンを閉じたかどうか監視
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(movieStoppedPlaying),
                                           name: Notification.Name.UIWindowDidBecomeHidden,
                                           object: nil)
완료된 항목에 movieStoppedPlaying() 내에 웹 뷰를 삭제했다고 쓰여 있습니다.
WKNavigationDelegate를 사용해야 합니까?여러 가지 고민이 있었지만.
Notification으로 구현됨🌸
잊지 말고removeObserver도 진행하세요.
deinit {
    NotificationCenter.default.removeObserver(self)
  }
겸사겸사 iOS 9 이후를 대상으로 한 구축 중NotificationCenter.default.removeObserver(_:name:object:) deinit에 쓰지 않아도 됩니다.
<참조: https://fromatom.hatenablog.com/entry/2017/12/13/135542>

완성


모든 소스 코드
import UIKit
import WebKit

class ViewController: UIViewController {

  var webView: WKWebView!

  @IBOutlet var webViewContainer: UIImageView!

  @IBAction func playButtonAction(_ sender: UIButton) {
    guard let url = URL(string: "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8") else {
      return
    }
    let urlRequest = URLRequest(url: url)
    webView.load(urlRequest)
    self.view.addSubview(webView)
  }

  deinit {
    NotificationCenter.default.removeObserver(self)
  }

  override func viewDidLoad() {
    super.viewDidLoad()
    webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
    webView.allowsBackForwardNavigationGestures = true
    // スクリーンを閉じたかどうか監視
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(movieStoppedPlaying),
                                           name: Notification.Name.UIWindowDidBecomeHidden,
                                           object: nil)
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
  }

  @objc func movieStoppedPlaying(notification: Notification?) {
    webView.removeFromSuperview()
  }
}
잊지 말고 쓰십시오import webKit🌸

총결산


이번에 WKWebView를 사용한 영상의 설치 상황을 조사한 결과 참고 자료가 생각보다 적었다(;)
나는 실상에서 어려움을 겪을 때 너를 도울 수 있는 기사를 끊임없이 보낼 수 있었으면 좋겠다고 생각한다.
그리고 끊임없이 자신의 기술을 향상시켜라!

참고 자료


아래의 보도와 블로그를 참고하게 해 주세요.
감사합니다!
https://www.i-enter.co.jp/blog/blog/2015/03/13/%E3%80%90ios%E3%80%91nsnotificationcenter%E3%81%A7%E5%9B%B0%E3%81%A3%E3%81%9F%EF%BC%81/
https://qiita.com/on0z/items/9768d2bccc29cc4e1851
http://kzy52.com/entry/2015/02/20/000838
https://qiita.com/shunyooo/items/d03a714af4dadd0727a6
https://fromatom.hatenablog.com/entry/2017/12/13/135542

좋은 웹페이지 즐겨찾기