VideoView
Written by
Updated at May 28, 2026
public final class VideoView: UIView
UIView component for displaying videos with the built-in control skin.
Contents
Discussion
VideoView extends the basic VideoSurface design with integrated controls: play and pause buttons, a progress bar, a buffering indicator, full-screen support, an error screen, and logo display support.
Use VideoView if you need a turnkey player skin. For minimalistic embedding without a skin or to implement a custom skin, use VideoSurface from CloudVideoPlayer.
Basic use in UIKit
SwiftUI
Inheritance
UIView
Methods
public func setupLogo(_ configuration: (UIImageView) -> Void)
Configures a logo displayed over the video.
Parameters:
configuration: Closure for configuring the logo'sUIImageView.
public func reset()
Detaches the player from the view.
public func attach(player: YaPlayer)
Attaches the player to the view.
Parameters:
player: Player instance to display.
public func getPipController() -> PictureInPictureController?
Returns the Picture-in-Picture (PiP) mode controller, if available.
Returns: PictureInPictureController instance, or nil if the device does not support PiP.
Examples
import CloudVideoPlayerUI
class PlayerViewController: UIViewController {
private let player = environment.player()
private let videoView = VideoView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(videoView)
videoView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
videoView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
videoView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
videoView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
videoView.heightAnchor.constraint(equalTo: videoView.widthAnchor, multiplier: 9.0 / 16.0)
])
videoView.attach(player: player)
}
}
import SwiftUI
import CloudVideoPlayerUI
struct VideoPlayerView: UIViewRepresentable {
let player: YaPlayer
func makeUIView(context: Context) -> VideoView {
let view = VideoView()
view.attach(player: player)
return view
}
func updateUIView(_ view: VideoView, context: Context) {
view.attach(player: player)
}
}