小编Sha*_*yag的帖子

UICollectionView 中的 iOS 辅助功能:VoiceOver 卡在最后一个单元格

我正在尝试获得在我的应用程序中工作的可访问性。我想要与“精选”页面中的“App Store”应用程序完全相同的行为:

Atableview其中每一行都包含collectionView带有一些单元格的 。我想使用 VoiceOver 遍历 a 的所有单元格collectionView,然后移动到下一个collectionView's单元格。

当我向右轻扫并从一个单元格移动到另一个单元格时,VoiceOver 工作。问题是,一旦我到达 a 的最后一个单元格collectionView,而不是移动到下一个collectionView,VoiceOver 就会卡在最后一个单元格上。该应用程序不会崩溃但停止响应。

我在 UICollectionViewCell 子类中使用此代码以在collectionView到达最后一个可见单元格时向右滚动:

override func accessibilityElementDidBecomeFocused() {
    let cv = self.superview as! UICollectionView
    let path = cv.indexPath(for: self)!
    if self == cv.visibleCells.last {
        cv.scrollToItem(at: path, at: .centeredHorizontally, animated: false)
        UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self)
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

谢谢

ios uiaccessibility swift

5
推荐指数
1
解决办法
1449
查看次数

无法使用 Fairplay HLS 从 AVPlayer 获取视频缩略图

我正在尝试为 tvOS 中的视频播放器应用程序构建自定义进度栏,并且希望在用户扫描视频时显示视频的缩略图。

我正在使用AVPlayerFairplay HLS 来播放远程视频文件。我尝试使用两种方法来做到这一点。一个用AVAssetImageGenerator's copyCGImage,另一个用AVPlayerItemVideoOutput'scopyPixelBuffer方法。两者都返回零。

当我尝试使用本地视频文件时,第一种方法有效。

方法一:

let imageGenerator = AVAssetImageGenerator(asset: playerItem.asset)
let progressSeconds = playerItem.duration.seconds * Double(progress)
let time = CMTime(seconds: progressSeconds, preferredTimescale: 5)
if let imageRef = try? imageGenerator.copyCGImage(at: time, actualTime: nil) {
   image = UIImage(cgImage:imageRef)
}
Run Code Online (Sandbox Code Playgroud)

方法二:

let videoThumbnailsOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
player?.currentItem?.add(videoThumbnailsOutput)

if let pixelBuffer = videoThumbnailsOutput.copyPixelBuffer(forItemTime: time, itemTimeForDisplay: nil) {
   let ciImage = CIImage(cvPixelBuffer: pixelBuffer)
Run Code Online (Sandbox Code Playgroud)

有什么想法我做错了吗或者还有其他方法吗?

谢谢!

avfoundation fairplay http-live-streaming swift tvos

1
推荐指数
1
解决办法
1912
查看次数