gpt4 book ai didi

ios - 如何使纵向模式下的视频适合方形单元格?

转载 作者:行者123 更新时间:2023-11-28 13:29:47 25 4
gpt4 key购买 nike

考虑一个 UICollectionView,其中每个单元格都包含一个 UIView。单元格中的 UIView 将链接到将播放视频的 AVPlayerLayer。但是,以纵向模式拍摄的视频似乎无法正确缩放。当我使用 AVPlayerLayervideoGravity 属性并将其设置为 resizeAspectFill 以便视频填充单元格时,它似乎剪切了视频。

Is there a way to make the video taken in portrait fit a square cell?

设置如下:

UICollectionView 提要中的单元格将包含一个 UIView,它将容纳视频播放器。这是 UIView 的类 PlayerViewClass:

import Foundation
import UIKit
import AVKit
import AVFoundation

class PlayerViewClass: UIView {

override static var layerClass: AnyClass {
return AVPlayerLayer.self
}

var playerLayer: AVPlayerLayer {

return layer as! AVPlayerLayer
}

var player: AVPlayer? {
get {
return playerLayer.player
}

set {
playerLayer.player = newValue
}
}
}

单元格 MyCollectionViewCell 有一个链接到此 UIView 的 IBOutlet:

class MyCollectionViewCell {

@IBOutlet weak var playerView: PlayerViewClass!


override func awakeFromNib() {
super.awakeFromNib()

//Setup, not relevant

}

}

FeedViewController 中 Feed 的 collectionView cellForItemAt indexPath 委托(delegate)方法如下:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)

if let cell = cell as? MyCollectionViewCell {

...

//Configuring the cell

...

//Video player
let avPlayer = AVPlayer(url: post.fullURL)

**//TODO: Configure layout so the portrait video scales appropriately**

//Setting cell's player
cell.playerView.playerLayer.player = avPlayer

//Play
cell.playerView.player?.play()

}
return cell
}

任何帮助将不胜感激,因为到目前为止我似乎找不到答案!

最佳答案

it seems to cut the video

是的,这就是 resizeAspectFill 所做的。它填满了正方形,任何不适合的东西都落在正方形之外并被切断。不足为奇。如果这不是您想要的,您为什么要请求 resizeAspectFill

也许您的意思是 resizeAspect。这将显示整个视频,在给定的限制(正方形)内。

关于ios - 如何使纵向模式下的视频适合方形单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com