我使用OpenTok这是一个webRTC框架。我需要做的是拍摄显示的视频并将其裁剪成圆圈。问题是,由于这个视频化身视图将被放置在具有清晰背景的视图中,我不能仅使用如此S.O.中所示的掩模。问题:
我还尝试在UIView类别中使用layer.radius
:
-(void)setRoundedViewToDiameter:(float)newSize;
{
CGPoint saveCenter = self.center;
CGRect newFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y, newSize, newSize);
self.frame = newFrame;
self.layer.cornerRadius = newSize / 2.0;
self.center = saveCenter;
}
然后像这样应用:
- (void) setUserVideoView:(UIView *)view {
[view setRoundedViewToDiameter:[WSUserView dimForUserAvatar:_sizeIndex]];
self.userVideo = view;
[self.userVideo setRoundedViewToDiameter:[WSUserView dimForUserAvatar:_sizeIndex]];
[self addSubview:self.userVideo];
[self sendSubviewToBack:self.userVideo];
[self layoutSubviews];
}
但它仍然是一个未切割的矩形。这是视频视图的一部分。我首先显示用户图像头像,但是当视频流连接时,我想用视频视图替换图像,但是作为一个圆圈。左图是我需要制作圆圈的流视图。
此外,这里是我试图裁剪的视频视图的检查员视图。如您所见,它是OTGLKVideoView
类。
答案 0 :(得分:0)
从我的评论中迁移:
您应该设置self.layer.masksToBounds = YES
,因为这样可以确保图层的子图层也会被修剪角半径。我假设问题出现了,因为每当视频帧改变时更新的不断变化的子层因此忽略了角半径。
通过这个解决类似问题的答案可以找到更多细节:https://stackoverflow.com/a/11325605/556479