我有一个QR Code Scanner视图,其中我有一个AVCaptureVideoPreviewLayer和一个UIButton。
显示此视图时,按钮中的文本不会显示。它应该显示“取消”一词。如果我触摸按钮或滑动按钮 - 但不点击它,按钮文本将显示在该点。
有谁知道如何让按钮文字正确显示?
以下是我的视图层次结构:
当我第一次进入扫描仪视图时,按钮如下所示:
没有文字。只有在我触摸按钮后,文本才会显示:
最后一件事,似乎这只是一个问题,只有iOS 10 ......
欢迎任何建议。谢谢!
答案 0 :(得分:0)
是。您需要添加叠加视图。
包含视频预览和叠加视图的主视图。 叠加视图包含按钮。
对于每个按钮,如果要进行动画处理,可以使用这些事件:
答案 1 :(得分:0)
作为AVCaptureSession
状态的文档,startRunning()
调用会阻塞主线程,因此无法正确绘制UI。
startRunning()方法是一个阻塞调用,可能需要一些时间, 因此,您应该在串行队列上执行会话设置 主队列未被阻止(这使得UI保持响应)。看到 AVCam-iOS:使用AVFoundation捕获图像和电影 实施例。
如果查看Apple的示例(Swift 3和Objective-C),您可以轻松地为这些操作设置新队列,而不会阻塞主线程。
如果您需要,这是Swift 2.3的示例。
// Swift 2.3
private let sessionQueue = dispatch_queue_create("session queue", nil)
override func viewDidLoad() {
super.viewDidLoad()
dispatch_async(sessionQueue) {
self.configureSession()
}
dispatch_async(dispatch_get_main_queue()) {
self.setupScreen()
}
}
答案 2 :(得分:0)