我正在使用 Apple 的 AVCamManual 示例代码的第三方 Swift 端口作为我正在构建的应用程序的基础。这可以在 GitHub 上找到。我对 Swift 3 的移植位于我的GitHub 存储库中。
我希望能够添加功能以允许用户使用捏合手势来缩放视频预览,并使用平移手势来移动缩放的视频预览。似乎使用 UIScrollView 是执行此操作的最佳选择,但我无法弄清楚如何执行此操作。
我确实在 SO 上找到了这篇文章,讨论了使用 ObjC 进行此操作,但尚未成功使用 Swift 将其添加到 AVCamManual-Swift 项目中。我将 UIScrollViewDelegate 添加到类声明中,如下所示:
class AAPLCameraViewController: UIViewController, AVCaptureFileOutputRecordingDelegate, UIScrollViewDelegate {
我为滚动条添加了一个 IBOutlet:
// Set IBOutlet for UIScrollView
@IBOutlet var scroller:UIScrollView?
然后我在 viewDidLoad() 的末尾添加了以下代码:
// Setup UIScrollView
let scroller = UIScrollView()
scroller.isScrollEnabled = true
scroller.backgroundColor = UIColor.clear
scroller.showsHorizontalScrollIndicator = false
scroller.isPagingEnabled = false
scroller.bounces = false
scroller.delegate = self
self.view.addSubview(scroller)
该应用程序构建并运行良好,但对捏合或平移手势没有响应。
在情节提要中,我将 UIScrollView 对象拖到预览视图,将其连接到 IBOutlet,然后设置它的约束以匹配预览视图的约束。该应用程序运行,但没有发生缩放和滚动的好处。我不确定我错过了什么。
从不同的角度接近它,我还尝试在情节提要中选择预览视图,然后选择编辑器 > 嵌入 > 滚动视图,但滚动视图处于非活动状态。在预览视图中选择所有对象时,我可以将它们嵌入到滚动视图中,但这不包括预览层,因此在运行时我看到的只是没有任何控件的视频预览。
关于我所缺少的任何建议?我觉得我非常接近解决这个问题,但由于我是一个菜鸟,我可能会远离杂草。