Измените формулировку VNdocumentCameraViewController
Я хотел бы обновить формулировки, отображаемые в представлении, представив VNDocumentCameraViewController. Например,
На этой картинке я бы хотел изменить,
Поместите документ в поле зрения -> Hello world
Отмена -> Стоп
Авто -> Удалить кнопку
Я не уверен, какие атрибуты имеет VNDocumentCameraViewController, поэтому не могу переопределить значения в дочернем классе. Как можно заменить заголовок этих кнопок на другое значение?
1 ответ
Короткий ответ: вам не разрешено делать это, если вы повторно выпускаете приложение в App Store; Apple предоставляет пользовательский интерфейс, и, поскольку они не предоставляют возможности его настройки, вы должны оставить его как есть. Более длинный ответ состоит в том, что вы можете пройти по иерархии представлений и выяснить, какие метки содержат какой текст, а затем вы можете просто изменить текст в этих 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"}))