我想通过展示VNDocumentCameraViewController来更新视图中显示的文字。例如,

在这张照片里,我想改变一下,
按钮
我不确定VNDocumentCameraViewController有哪些属性,所以不能覆盖子类中的值。如何才能将这些按钮标题重写为不同的值?
发布于 2020-01-06 20:46:44
简单地说,如果您要发布到Apple,就不允许这样做;Apple提供了UI,并且由于它们没有提供定制它的方法,所以应该保持原样。更长的答案是,您可以遍历视图层次结构,找出哪些标签包含哪些文本,然后您可以简单地更改这些UILabels上的文本。这样做是不好的,原因有很多: 1)它可能使您从应用程序商店被拒绝;2)实现可以在不同版本之间更改,破坏您的应用程序3)文本是本地化的,因此您的更改不会在其他语言中工作。
有了这个警告,下面的代码就可以执行DFS搜索,以找到与某个谓词匹配的视图,例如,作为一个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"}))https://stackoverflow.com/questions/59615267
复制相似问题