Изменить формулировку VNdocumentCameraViewController - PullRequest
0 голосов
/ 06 января 2020

Я хотел бы обновить формулировки, показанные в представлении, представив VNDocumentCameraViewController. Например,

enter image description here

На этом снимке я хочу изменить:

  1. Положение документа в поле зрения -> Hello world

  2. Отмена -> Стоп

  3. Авто -> Удалить кнопку

Я не уверен, какие атрибуты имеет VNDocumentCameraViewController, поэтому не может переопределить значения в дочернем классе. Как можно переопределить заголовок кнопки на другое значение?

1 Ответ

1 голос
/ 06 января 2020

Короткий ответ: вам не разрешено делать это, если вы переиздаете в App Store; Apple предоставляет пользовательский интерфейс, и, поскольку они не предоставляют способа его настройки, вы должны оставить его как есть. Более длинный ответ заключается в том, что вы можете обойти иерархию представления и выяснить, какие метки содержат какой текст, а затем вы можете просто изменить текст на этих UILabels. Плохо делать это по многим причинам: 1) Это может привести к отклонению вас из магазина приложений 2) Реализация может меняться в зависимости от версии, ломая ваше приложение 3) Текст локализован, поэтому ваши изменения не будут работать на других языках

С этим предупреждением приведен код для выполнения поиска в DFS, чтобы найти представление, которое соответствует определенному предикату, например, если UILabel определит c текст.

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"}))
...