Воспроизведение видео в приложении watchOS.
WKInterfaceMovie — элемент интерфейса, позволяющий воспроизводить видео- и аудиоконтент в приложении для watchOS.
Работает как положено. Видео воспроизводится. Как насчет масштабирования до заполнения экрана?
- В раскадровке есть визуальная опция. Выбор Изменить размер заливки игнорируется.
- Для этого есть функция:
func setVideoGravity(_ videoGravity: WKVideoGravity)
Возможность изменения размера фильма. Список возможных значений см. в описании типа WKVideoGravity.
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet weak var movieView: WKInterfaceMovie!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
setupVideoPlayer()
}
func setupVideoPlayer() {
guard let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") else {
return
}
movieView.setMovieURL(videoURL)
movieView.setVideoGravity(.resizeAspectFill)
}
}
Базовая настройка в Xcode. Видео загружается при нажатии на кнопку воспроизведения. Играет после загрузки. Не заполняет экран.
WKВидеоГравитация
Константы, указывающие на появление видеоконтента.
case resizeAspectFill
Размер содержимого изменяется, чтобы полностью заполнить прямоугольник границ, сохраняя при этом исходное соотношение сторон содержимого. Этот параметр приводит к обрезке краев видео по оси, которую оно превышает.
Это идеально. Давай попробуем.
Это не работает.
Независимо от videoGravity
(в раскадровке или коде), видео воспроизводится с измененным размером, чтобы соответствовать размеру, и заполняет экран только при двойном касании.
Что мне не хватает?
Кроме того, если я исследую метод presentMediaPlayerController
с параметрами медиаплеера, я заметил странное поведение:
• WKMediaPlayerControllerOptionsAutoplayKey
✅
• WKMediaPlayerControllerOptionsStartTimeKey
✅
• WKMediaPlayerControllerOptionsVideoGravityKey
???? (сбой и возврат к поведению по умолчанию)
В общем, похоже, сломался. Я хотел бы обходной путь, если у кого-то есть идеи.