View inside View 吃了相同的位置
View inside View ate the same position
这是我的代码:
player = AVPlayer(URL: url!)
layer.player = self.player
layer.frame = CGRectMake(self.videoView.frame.origin.x, self.videoView.frame.origin.y, self.videoView.frame.width, self.videoView.frame.height)
print(self.videoView.frame.origin.x) //67
print(self.videoView.frame.origin.y) //37
layer.backgroundColor = UIColor.clearColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
self.videoView.layer.addSublayer(layer)
player.play()
videoView是我storyboard上的greenView,我想把视频放在greenview的同一个位置
更改下一行
layer.frame = CGRectMake(0, 0, self.videoView.frame.width, self.videoView.frame.height)
将 origin 设置为 0,0 将解决您的问题。记住原点是基于 SUPERview 的左上角。所以 avPlayer.frame 必须与 videoFrame 的框架不同,因为它们有不同的超级视图。
我没理解对,你想要什么,但假设你想把图层放在 videoView 的相同位置。
layer.frame = CGRectMake(0, 0, self.videoView.frame.width, self.videoView.frame.height)
为什么?
我们在 iOS 中有边界和框架。它们几乎相同,都是表示为位置的矩形:(x,y) 位置和 (width, height) 大小。但是:
- bounds是相对于自身坐标系(0,0);
- Frames 相对于父视图;
您正在为 videoView 设置图层,因为 videoView 是图层的父视图,所以您必须在帧 x = 0 和 y = 0 中设置。
这是我的代码:
player = AVPlayer(URL: url!)
layer.player = self.player
layer.frame = CGRectMake(self.videoView.frame.origin.x, self.videoView.frame.origin.y, self.videoView.frame.width, self.videoView.frame.height)
print(self.videoView.frame.origin.x) //67
print(self.videoView.frame.origin.y) //37
layer.backgroundColor = UIColor.clearColor().CGColor
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
self.videoView.layer.addSublayer(layer)
player.play()
videoView是我storyboard上的greenView,我想把视频放在greenview的同一个位置
更改下一行
layer.frame = CGRectMake(0, 0, self.videoView.frame.width, self.videoView.frame.height)
将 origin 设置为 0,0 将解决您的问题。记住原点是基于 SUPERview 的左上角。所以 avPlayer.frame 必须与 videoFrame 的框架不同,因为它们有不同的超级视图。
我没理解对,你想要什么,但假设你想把图层放在 videoView 的相同位置。
layer.frame = CGRectMake(0, 0, self.videoView.frame.width, self.videoView.frame.height)
为什么?
我们在 iOS 中有边界和框架。它们几乎相同,都是表示为位置的矩形:(x,y) 位置和 (width, height) 大小。但是:
- bounds是相对于自身坐标系(0,0);
- Frames 相对于父视图;
您正在为 videoView 设置图层,因为 videoView 是图层的父视图,所以您必须在帧 x = 0 和 y = 0 中设置。