ios - 更改VNdocumentCameraViewController的写法

标签 ios swift vndocumentcameraviewcontroller

我想通过呈现 VNDocumentCameraViewController 来更新 View 中显示的文字。 例如,

enter image description here

在这张照片中,我想改变,

  1. 在 View 中定位文档 -> Hello world

  2. 取消 -> 停止

  3. 自动 -> 删除按钮

我不确定 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/

相关文章:

ios - UISearchBar 关闭方法

ios - 自定义推送通知未使用 firebase 接收

ios - 从 NSData 或编码图像中提取图像类型

ios - 清除 VNDocumentCameraScan Swift 中的扫描图像缓存

iphone - CoreAudio : Playing system sounds and record playing sound in iphone

iphone - TableView :didSelectRowAtIndexPath: call to current-view Parser delegates

arrays - 检查相匹配的 url

ios - 如何快速构建具有不同原型(prototype)单元的 UITableViewController

iOS 13 - VNDocumentCameraViewController 最大扫描次数