Swift에서 애니메이션 재생에 대한 노트
차리다
MediaPlayer.프레임워크 추가.
MediaPlayer 가져오기
import MediaPlayer
설치 예
모든 화면에 웹 페이지의 동영상을 재생하는 예.
ViewController.swiftimport UIKit
import MediaPlayer
class ViewController: UIViewController {
var moviePlayer:MPMoviePlayerController!
override func viewDidLoad() {
super.viewDidLoad()
var url:NSURL = NSURL(string: "http://sample.com/video.mov")!
self.moviePlayer = MPMoviePlayerController(contentURL: url)
self.moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.view.addSubview(moviePlayer.view)
self.moviePlayer.fullscreen = true
self.moviePlayer.controlStyle = MPMovieControlStyle.Embedded
self.moviePlayer.repeatMode = MPMovieRepeatMode.One
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerPlaybackDidFinishNotificationReceived:", name: MPMoviePlayerPlaybackDidFinishNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerLoadStateDidChangeNotificationReceived:", name: MPMoviePlayerLoadStateDidChangeNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerWillEnterFullscreenNotificationReceived:", name: MPMoviePlayerWillEnterFullscreenNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerWillExitFullscreenNotificationReceived:", name: MPMoviePlayerWillExitFullscreenNotification, object: nil)
}
func onMPMoviePlayerPlaybackDidFinishNotificationReceived(notification: NSNotification){
let userInfo: NSDictionary = notification.userInfo!
let reason = userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] as Int
println("onMPMoviePlayerPlaybackDidFinishNotificationReceived = " + String(reason))
}
func onMPMoviePlayerLoadStateDidChangeNotificationReceived(notification: NSNotification){
let state = self.moviePlayer.loadState
println("onMPMoviePlayerLoadStateDidChangeNotificationReceived = " + String(state.rawValue))
}
func onMPMoviePlayerWillEnterFullscreenNotificationReceived(notification: NSNotification){
println("onMPMoviePlayerWillEnterFullscreenNotificationReceived")
}
func onMPMoviePlayerWillExitFullscreenNotificationReceived(notification: NSNotification){
println("onMPMoviePlayerWillExitFullscreenNotificationReceived")
}
}
등록 정보
동작은 MPMoviePlay Controller에서 자세히 지정할 수 있습니다.
controlStyle
재생 컨트롤을 표시하는 방법입니다.선택할 수 있는 값은 다음과 같습니다.
enum MPMovieControlStyle : Int {case None // No controls、表示しない
case Embedded // Controls for an embedded view、動画内に埋め込み
case Fullscreen // Controls for fullscreen playback、全画面再生用に表示
}
repeatMode
재생을 반복할지 여부입니다.선택할 수 있는 값은 다음과 같습니다.enum MPMovieRepeatMode : Int {
case None // 繰り返しなし
case One // 繰り返す
}
shouldAutoplay
자동으로 재생이 시작됩니까?BOOL 값으로 지정합니다.
scalingMode
영상을 어떻게 축소합니까?선택할 수 있는 값은 다음과 같습니다.enum MPMovieScalingMode : Int {
case None // No scaling
case AspectFit // Uniform scale until one dimension fits
case AspectFill // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
case Fill // Non-uniform scale. Both render dimensions will exactly match the visible bounds
}
Notification
Player의 상태가 변경되면 Notification에서 공지합니다.나는 통지하고 싶은 몇 가지 요소를 열거했다.
import MediaPlayer
모든 화면에 웹 페이지의 동영상을 재생하는 예.
ViewController.swift
import UIKit
import MediaPlayer
class ViewController: UIViewController {
var moviePlayer:MPMoviePlayerController!
override func viewDidLoad() {
super.viewDidLoad()
var url:NSURL = NSURL(string: "http://sample.com/video.mov")!
self.moviePlayer = MPMoviePlayerController(contentURL: url)
self.moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.view.addSubview(moviePlayer.view)
self.moviePlayer.fullscreen = true
self.moviePlayer.controlStyle = MPMovieControlStyle.Embedded
self.moviePlayer.repeatMode = MPMovieRepeatMode.One
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerPlaybackDidFinishNotificationReceived:", name: MPMoviePlayerPlaybackDidFinishNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerLoadStateDidChangeNotificationReceived:", name: MPMoviePlayerLoadStateDidChangeNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerWillEnterFullscreenNotificationReceived:", name: MPMoviePlayerWillEnterFullscreenNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onMPMoviePlayerWillExitFullscreenNotificationReceived:", name: MPMoviePlayerWillExitFullscreenNotification, object: nil)
}
func onMPMoviePlayerPlaybackDidFinishNotificationReceived(notification: NSNotification){
let userInfo: NSDictionary = notification.userInfo!
let reason = userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] as Int
println("onMPMoviePlayerPlaybackDidFinishNotificationReceived = " + String(reason))
}
func onMPMoviePlayerLoadStateDidChangeNotificationReceived(notification: NSNotification){
let state = self.moviePlayer.loadState
println("onMPMoviePlayerLoadStateDidChangeNotificationReceived = " + String(state.rawValue))
}
func onMPMoviePlayerWillEnterFullscreenNotificationReceived(notification: NSNotification){
println("onMPMoviePlayerWillEnterFullscreenNotificationReceived")
}
func onMPMoviePlayerWillExitFullscreenNotificationReceived(notification: NSNotification){
println("onMPMoviePlayerWillExitFullscreenNotificationReceived")
}
}
등록 정보
동작은 MPMoviePlay Controller에서 자세히 지정할 수 있습니다.
controlStyle
재생 컨트롤을 표시하는 방법입니다.선택할 수 있는 값은 다음과 같습니다.
enum MPMovieControlStyle : Int {case None // No controls、表示しない
case Embedded // Controls for an embedded view、動画内に埋め込み
case Fullscreen // Controls for fullscreen playback、全画面再生用に表示
}
repeatMode
재생을 반복할지 여부입니다.선택할 수 있는 값은 다음과 같습니다.enum MPMovieRepeatMode : Int {
case None // 繰り返しなし
case One // 繰り返す
}
shouldAutoplay
자동으로 재생이 시작됩니까?BOOL 값으로 지정합니다.
scalingMode
영상을 어떻게 축소합니까?선택할 수 있는 값은 다음과 같습니다.enum MPMovieScalingMode : Int {
case None // No scaling
case AspectFit // Uniform scale until one dimension fits
case AspectFill // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
case Fill // Non-uniform scale. Both render dimensions will exactly match the visible bounds
}
Notification
Player의 상태가 변경되면 Notification에서 공지합니다.나는 통지하고 싶은 몇 가지 요소를 열거했다.
case None // No controls、表示しない
case Embedded // Controls for an embedded view、動画内に埋め込み
case Fullscreen // Controls for fullscreen playback、全画面再生用に表示
enum MPMovieRepeatMode : Int {
case None // 繰り返しなし
case One // 繰り返す
}
enum MPMovieScalingMode : Int {
case None // No scaling
case AspectFit // Uniform scale until one dimension fits
case AspectFill // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
case Fill // Non-uniform scale. Both render dimensions will exactly match the visible bounds
}
Player의 상태가 변경되면 Notification에서 공지합니다.나는 통지하고 싶은 몇 가지 요소를 열거했다.
지원되는 형식
비디오
오디오
Reference
이 문제에 관하여(Swift에서 애니메이션 재생에 대한 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takecian/items/e5fd13b506161edf8e33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)