@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
extension View {
/// Sets the style for `TextField` within the environment of `self`.
public func textFieldStyle<S>(_ style: S) -> some View where S : TextFieldStyle
}
см. Примечание
Устанавливает стиль для TextField
в среде self
UIViewRepresentable наследуется от View, но не имеет любой TextField внутри 'self'
.bold, .itali c ... являются модификаторами для шрифта, а не для универсального c представления. Допустим, скажем,
Image("image001").italic()
также не работает.
О разборке см. Оболочка отклоненного свойства
О привязке с задержкой см.
/// Creates an instance with a `Text` label generated from a localized title
/// string.
///
/// - Parameters:
/// - titleKey: The key for the localized title of `self`, describing
/// its purpose.
/// - text: The text to be displayed and edited.
/// - onEditingChanged: An `Action` that will be called when the user
/// begins editing `text` and after the user finishes editing `text`,
/// passing a `Bool` indicating whether `self` is currently being edited
/// or not.
/// - onCommit: The action to perform when the user performs an action
/// (usually the return key) while the `TextField` has focus.
public init(_ titleKey: LocalizedStringKey, text: Binding<String>, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {})
ПРИМЕР "отложенного" связывания
import SwiftUI
struct MyTextField<S>: View where S: StringProtocol {
let label: S
@State private var __text = ""
@Binding var text: String
var body: some View {
TextField(label, text: $__text, onEditingChanged: { (e) in
}) {
self.text = self.__text
}
}
}
struct ContentView: View {
@State var text = " "
var body: some View {
VStack {
MyTextField(label: "label", text: $text).textFieldStyle(RoundedBorderTextFieldStyle())
Text(text)
}.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Если вам нужен другой шрифт и .bold, используйте
MyTextField(label: "label", text: $text).textFieldStyle(RoundedBorderTextFieldStyle()).font(Font.title.bold())
или
MyTextField(label: "label", text: $text).font(Font.title.bold()).textFieldStyle(RoundedBorderTextFieldStyle())