1 遵循 RTCVideoViewDelegate代理 调用代理方法
- (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size
2 在RTCVideoViewDelegate代理中设置如下代码:
- (void)videoView:(RTCEAGLVideoView *)videoView didChangeVideoSize:(CGSize)size {
if (videoView == self.videoView) {
_remoteVideoSize = size;
}
[self setNeedsLayout];
}
下方设置等比大小计算
- (void)layoutSubviews {
CGRect bounds = self.bounds;
if (_remoteVideoSize.width > 0 && _remoteVideoSize.height > 0) {
// Aspect fill remote video into bounds.
CGRect remoteVideoFrame =
AVMakeRectWithAspectRatioInsideRect(_remoteVideoSize, bounds);
CGFloat scale = 1;
if (remoteVideoFrame.size.width > remoteVideoFrame.size.height) {
// Scale by height.
scale = bounds.size.height / remoteVideoFrame.size.height;
} else {
// Scale by width.
scale = bounds.size.width / remoteVideoFrame.size.width;
}
remoteVideoFrame.size.height *= scale;
remoteVideoFrame.size.width *= scale;
self.videoView.frame = remoteVideoFrame;
self.videoView.center =
CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
} else {
self.videoView.frame = bounds;
}
}