を維持しながら、フルスクリーンのリモートストリームを切り替えます私はのWebRTC遠隔ビデオストリームと協力し、これにリモートセッションを添付しています:スウィフト3、iOSの10+、Xcodeの8.3+、Quickblox - アスペクト比/ビデオ解像度
@IBOutlet weak var remoteVideoElement: QBRTCRemoteVideoView!
私がしたいことは、ユーザーが上記のアウトレットをタップすると、リモートストリームがウィンドウ全体を満たすときです。ユーザーが再度タップすると、レイアウト内の通常の状態に戻ります。ほとんどの場合、リモートビデオストリームの正しいアスペクト比または画面解像度を維持できない場合を除き、正常に動作します。誰かが望む効果を得る正しい方法を見つけ出す手助けをすることができますか?ここで
は私のコードです:
var isExpanded = Bool()
var videoPlayerViewCenter = CGPoint()
override func viewDidLoad() {
super.viewDidLoad()
isExpanded = false
let toggleFullScreen = UITapGestureRecognizer(target: self, action: #selector (self.toggleFullScreenRemoteVideo(sender:)))
self.view.addGestureRecognizer(toggleFullScreen)
}
func toggleFullScreenRemoteVideo(sender: QBRTCRemoteVideoView) {
if !isExpanded {
// GO FULL SCREEN
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.videoPlayerViewCenter = self.remoteVideoElement.center
self.view.bringSubview(toFront: self.modalShadeBackground)
self.view.bringSubview(toFront: self.remoteVideoElement)
self.remoteVideoElement.frame = CGRect(x: 0, y: 0, width: self.view.frame.height, height: self.view.frame.width)
self.remoteVideoElement.frame = AVMakeRect(aspectRatio: (self.remoteVideoElement.layer.preferredFrameSize()), insideRect: self.remoteVideoElement.frame)
self.remoteVideoElement.contentMode = .scaleAspectFit
self.remoteVideoElement.frame = UIScreen.main.bounds
self.remoteVideoElement.center = self.view.center
self.remoteVideoElement.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi/2))
self.remoteVideoElement.layoutSubviews()
}, completion: nil)
} else {
// REVERT BACK TO ORIGINAL CONTRAINTS IN THE LAYOUT
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.remoteVideoElement.transform = CGAffineTransform.identity
self.remoteVideoElement.center = self.videoPlayerViewCenter
self.view.sendSubview(toBack: self.remoteVideoElement)
self.view.sendSubview(toBack: self.modalShadeBackground)
self.remoteVideoElement.frame = AVMakeRect(aspectRatio: (self.remoteVideoElement.layer.preferredFrameSize()), insideRect: self.remoteVideoElement.frame)
self.remoteVideoElement.layoutSubviews()
}, completion: nil)
}
isExpanded = !isExpanded
}
この問題については、すぐにお返事します。 –
ファイアウォールにミッションクリティカルな問題が発生したため、今日までこれまでには行きませんでした。私はあなたに50点満点を与えていないことが嫌いです。私がそれを解決するために何かできるかどうかを教えてください。 –
ここにコードを追加できますか?具体的には、少なくともmaxImageDrawingAreaとimageSizeをキャストできますか?それらは何であるはずですか?どのように "私のビデオイメージの比率"を取得しますか? –