[英]How to add cornerRadius to AVPlayerViewController in Swift?
i'm working on video player app that written in Swift
. 我正在研究用
Swift
编写的视频播放器应用程序。
my problem is i should make AVPlayerViewController
corners curve. 我的问题是我应该使
AVPlayerViewController
角落曲线。 but i want to use just AVPlayerViewController
not any other classes. 但我想只使用
AVPlayerViewController
而不是任何其他类。
what i did now: 我现在做了什么:
fileprivate func setupPlayer() {
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.view.frame = CGRect.init(x: xPosition,
y: yPosition,
width: 200,
height: 100)
playerViewController.player = player
self.addChild(playerViewController)
self.view.addSubview(playerViewController.view)
playerViewController.didMove(toParent: self)
playerViewController.videoGravity = AVLayerVideoGravity.init(rawValue: "")
playerViewController.view.backgroundColor = UIColor(displayP3Red: 0/255, green: 0/255, blue: 0/255, alpha: 0)
playerViewController.view.layer.cornerRadius = 20
playerViewController.contentOverlayView?.isHidden = true
playerViewController.contentOverlayView?.alpha = 0
}
what i already have is: 我已经拥有的是:
but i want to have something curve like the one in appstore: 但我希望有一些像appstore中那样的曲线:
The AVPlayerViewController
adds a sub layer to your view. AVPlayerViewController
将一个子图层添加到视图中。 When you set the playerViewController.view.layer.cornerRadius
property it only affects it and not its children. 设置
playerViewController.view.layer.cornerRadius
属性时,它只影响它而不影响它的子playerViewController.view.layer.cornerRadius
。
To fix it you must clip the subviews (or here the sublayer) by using the masksToBounds
layer property. 要修复它,您必须使用
masksToBounds
图层属性剪切子视图(或此处为子图层)。
playerViewController.view.layer.masksToBounds = true
Try This. 试试这个。
import UIKit import AVKit class ViewController: UIViewController { var videoController:AVPlayerViewController! var player:AVPlayer! var url:URL! override func viewDidLoad() { super.viewDidLoad() let path:String=Bundle.main.path(forResource: "PinkLake", ofType: "mp4")! url=URL(fileURLWithPath: path) player=AVPlayer(url: url) videoController=AVPlayerViewController() videoController.player=player; let viewVideo=UIView() viewVideo.frame.origin.x=0; viewVideo.frame.origin.y=50; viewVideo.frame.size.width=200; viewVideo.frame.size.height=200; videoController.view.frame=viewVideo.frame //declare tempView var tempView = UIView(frame: videoController.view.frame) tempView=videoController.view; tempView.layer.cornerRadius=50; videoController.view=tempView; self.view.addSubview(viewVideo) viewVideo.addSubview(videoController.view) self.view.backgroundColor=UIColor.yellow player.play() } }
AVPlayerLayer is OK. AVPlayerLayer没问题。
import UIKit
import AVKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if let url = URL(string: "SOMEVIDEOURL.mp4") {
let player = AVPlayer(url: url)
let layer = AVPlayerLayer(player: player)
layer.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
view.layer.addSublayer(layer)
layer.cornerRadius = 20
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.