- J-all
Swift - YouTube動画のあれこれ①
最終更新: 2019年2月19日
こんにちは。J-allエンジニアの中澤です。
SwiftでのiOSアプリケーションの開発を行う際にYouTubeの動画を埋め込み再生したり、動画の情報をアプリに反映させたりといろいろ試してみたので役にたつと思うものを紹介しようと思います。
今回は、画面を横にした際に自動的にフルスクリーン再生になる方法を紹介します。
まずは、https://dev.classmethod.jp/smartphone/youtube-player-ios-helper/
こちらの方の方法を参考にしてYouTube動画を埋め込みます。
こちらの実装が済んだら、続いて画面の向きを判定し動画のサイズを向きごとに変更するコードを実装します。
class ViewController: UIViewController{
@IBOutlet weak var playerView: YTPlayerView!
override func viewDidLoad() {
super.viewDidLoad()
// 画面回転の通知機能を設定します。
let action = #selector(orientationDidChange(_:))
let center = NotificationCenter.default
let name = UIDevice.orientationDidChangeNotification
center.addObserver(self, selector: action, name: name, object: nil)
}
// 画面の向きがかわったら呼び出される.
@objc func orientationDidChange(_ notification: NSNotification) {
let BoundSize_w: CGFloat = UIScreen.main.bounds.width //横幅
let BoundSize_h: CGFloat = UIScreen.main.bounds.height //縦幅
// 向きの判定.
if UIDevice.current.orientation.isLandscape {
//横向きの判定.
//向きに従って位置、サイズを調整する.
self.view.bringSubviewToFront(playerView)
playerView.frame = CGRect(x: 0, y: 0, width: BoundSize_w, height: BoundSize_h)
} else if UIDevice.current.orientation.isLandscape {
//縦向きの判定.
//向きに従って位置、サイズを調整する.
playerView.frame = CGRect(x: 0, y: 150, width: BoundSize_w, height: 432)
}
}
・・・
・・・
}
を書き加えることで画面の回転に従って画面のサイズを変更することができます。
let BoundSize_w: CGFloat = UIScreen.main.bounds.width //横幅
let BoundSize_h: CGFloat = UIScreen.main.bounds.height //縦幅
にて縦横の最大サイズを自動判定して数値化してくれるためフルスクリーン再生を実現することが可能となります。
playerView.frame = CGRect(x: 0, y: 0, width: BoundSize_w, height: BoundSize_h)
の値を変更することで位置、サイズを変更することができるためいろいろ試してみるとおもしろいかも?
ここで重要なのは縦、横ともに playerView.frame を設定することです。
こうしないと向きを戻しても動画のサイズが変わらないので注意してください(^^)