我创建了一个UIHostingController
来在我的应用程序中放置一个SwiftUI视图。根视图包含一个VStack
,并在其中包含一些HStack
和Picker
。选择器将视图推到比屏幕宽8点的位置。看起来很糟-文字略微不在屏幕上。通常,我会使用自动布局约束来解决此问题,该约束会将视图的左右边缘固定到超级视图,优先级为1000(必填)。 SwiftUI中的等效功能是什么?
一些归结为问题的代码
struct EditSegmentView: View {
@State var seconds: Int = 10
var body: some View {
VStack {
HStack {
Text("Pause after intro")
Spacer()
Text("10 seconds")
}
Picker(selection: $seconds, label: Text("Seconds")) {
ForEach(0..<60) { n in
Text("\(n) sec").tag(n)
}
}
}
}
}
从UIViewController
显示,如下所示:
let editView = EditSegmentView()
let vc = UIHostingController(rootView: editView)
vc.modalPresentationStyle = .fullScreen
present(vc, animated: true)
答案 0 :(得分:1)
我看不到提供的代码有任何明显的错误。您可以尝试使用const precedingThreeChars =
getCharsPrecedingFocus(contentState, selectionState, 3);
来强制GeometryReader
为可用空间的宽度。另外还要添加一些VStack
),否则您的padding(
将从边缘开始
Text
在调试视图层次结构时,为什么视图扩展到边缘之外是否有任何线索?
答案 1 :(得分:0)
这有点晚了,但是我遇到了同样的问题,并通过确保外部VStack的对齐方式设置为.lead来解决。内部Vstack也具有对齐方式:引导,然后向内部VStack添加.padding()