% может быть отдельным представлением, которое всегда отображается точно в правильном положении.
Оберните элемент управления UIKit в UIViewRepresentable
. Это даст вам доступ к дополнительной информации о позиционировании. Если вы заключите UITextInput
, то вы можете получить CGRect
последнего символа текста с помощью firstRect(for:)
.
Затем вы можете отобразить % :
- с UIKit в вашем пользовательском представлении
- или добавить обратный вызов или привязку к вашему пользовательскому просмотр, который возвращает
CGRect
и отображение % с SwiftUI.
Если вы хотите отобразить % с SwiftUI, это может быть достигнуто с ZStack:
ZStack(alignment: .topLeading) {
Text("%").offset(x: lastCharacterPosition.maxX, y: lastCharacterPosition.minY)
CustomTextInput(
text: $text,
onLastCharacterPositionChange: { rect in
self.lastCharacterPosition = rect
}
)
}
Обратите внимание, что в этом сценарии CustomTextInput
должен быть настроен для прозрачности. Также смещение может потребовать некоторой настройки, я не пробовал.