sách gpt4 ai đã đi

应用约束后快速获取 View 边界

In lại 作者:行者123 更新时间:2023-11-30 10:49:48 30 4
mua khóa gpt4 Nike

我有一个 .xib 文件,其中包含我想用来播放视频文件的 View 。该 View 具有配置其大小和位置的约束。现在我需要获取这些来配置我的视频播放器:

let slide1: OnboardingSlide = Bundle.main.loadNibNamed("OnboardingSlide", owner: self, options: nil)?.first as! OnboardingSlide
if let path = Bundle.main.path(forResource: "Onboarding_01", ofType: "mp4") {
let videoURL = URL(fileURLWithPath: path)
slide1.videoPlayer = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: slide1.videoPlayer)
playerLayer.frame = slide1.videoView.bounds // <-- this does not work

slide1.layer.addSublayer(playerLayer)
slide1.videoPlayer?.play()

NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: slide1.videoPlayer?.currentItem, queue: .main) { _ in
slide1.videoPlayer?.seek(to: CMTime(seconds: 0, preferredTimescale: 1))
slide1.videoPlayer?.play()
}
}

Nhưngslide1.videoView.bounds仅包含应用约束之前的矩形。我怎样才能得到实际的大小和位置?

1 Câu trả lời

您可以尝试通过调用强制布局机计算大小和位置:

    setNeedsLayout()
layoutIfNeeded()

Ví dụ:

    ...
slide1.videoPlayer = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: slide1.videoPlayer)
setNeedsLayout()
layoutIfNeeded()
...

或者只是尝试在layoutSubviews()中捕获slide1.videoPlayer的正确大小

关于应用约束后快速获取 View 边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54866889/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com