#ios
Вопрос:
У меня есть представление в режиме .sheet. Вид выходит за пределы границ листа в вертикальном режиме, но хорошо виден в ландшафтном режиме.
В представлении есть только представление прокрутки, а в представлении прокрутки-набор полей ввода пользовательского интерфейса.
Просмотр прокрутки:
ScrollView(.vertical) { Text("Register") .font(.headline) .bold() .padding() SATextField(tag: 0, placeholder: "Name", changeHandler: { (name) in self.name = name }, onCommitHandler: { print("commit handler") }, text: self.name) .onTapGesture { self.name = "" } .padding() .keyboardType(.default) .overlay( RoundedRectangle(cornerRadius: 16) .stroke(self.name == "" ? borderColor : Color.green, lineWidth: 2) ) .fixedSize(horizontal: false, vertical: true) //more fields }
Пользовательское поле ввода:
struct SATextField: UIViewRepresentable { private let tmpView = WrappableTextField() //var exposed to SwiftUI object init var tag:Int = 0 var placeholder:String? var fieldVariable:String? var changeHandler:((String)-gt;Void)? var returnKeyType: UIReturnKeyType = .default var isSecureTextEntry: Bindinglt;Boolgt;? = nil var onCommitHandler:(()-gt;Void)? var text: String? func makeUIView(context: UIViewRepresentableContextlt;SATextFieldgt;) -gt; WrappableTextField { tmpView.tag = tag tmpView.delegate = tmpView tmpView.placeholder = placeholder tmpView.onCommitHandler = onCommitHandler tmpView.textFieldChangedHandler = changeHandler tmpView.isSecureTextEntry = isSecureTextEntry?.wrappedValue ?? false tmpView.returnKeyType = returnKeyType return tmpView } func updateUIView(_ uiView: WrappableTextField, context: UIViewRepresentableContextlt;SATextFieldgt;) { if text != nil { uiView.text = text } uiView.isSecureTextEntry = isSecureTextEntry?.wrappedValue ?? false uiView.setContentHuggingPriority(.defaultHigh, for: .vertical) uiView.setContentHuggingPriority(.fittingSizeLevel, for: .horizontal) } }
Добавление .frame(ширина: ) или .frame(минимальная ширина: , идеальная ширина: , максимальная ширина: ) совсем не помогает или приводит к другим ошибкам, таким как смещение представления вправо. Пример представления прокрутки в SwiftUI