我想通过呈现 VNDocumentCameraViewController 来更新 View 中显示的文字。 例如,
在这张照片中,我想改变,
在 View 中定位文档 -> Hello world
取消 -> 停止
自动 -> 删除按钮
我不确定 VNDocumentCameraViewController 有什么属性,所以不能覆盖子类中的值。 如何将这些按钮标题覆盖为不同的值?
最佳答案
简短的回答是,如果您重新发布到 App Store,则不允许您这样做; Apple 提供了 UI,因为他们不提供自定义它的方法,所以您应该保持原样。更长的答案是您可以遍历 View 层次结构并找出哪些标签包含哪些文本,然后您可以简单地更改这些 UILabel 上的文本。这样做不好,原因有很多: 1)它会让你被应用商店拒绝 2)实现可以在版本之间改变,破坏你的应用程序 3) 文本已本地化,因此您的更改不适用于其他语言
有了这个警告,下面是执行 DFS 搜索以查找与特定谓词匹配的 View 的代码,例如,作为 UILabel 将获得一些特定文本。
import SwiftUI
import PlaygroundSupport
let a = UIView()
let b = UIView()
let c = UIView()
let l = UILabel()
let z = UILabel()
a.addSubview(b)
a.addSubview(c)
b.addSubview(z)
c.addSubview(l)
l.text = "hello"
extension UIView {
func child(matching predicate: (UIView) throws -> Bool) rethrows -> UIView? {
for child in subviews {
if try predicate(child) {
return child
}
if let found = try child.child(matching: predicate) {
return found
}
}
return nil
}
}
print(l === a.child(matching: {($0 as? UILabel)?.text == "hello"}))
关于ios - 更改VNdocumentCameraViewController的写法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615267/