SwiftUI添加Spacer后View宽度约束失效,按钮超出安全区域无限扩展问题求助
SwiftUI添加Spacer后View宽度约束失效,按钮超出安全区域无限扩展问题求助
我碰到一个百思不得其解的Bug:在视图容器中间加了个Spacer之后,右侧的按钮直接疯长,无限扩展到安全区域以外——连动态岛下方的区域都被覆盖,一直延伸到屏幕边缘,完全无视安全区域的限制。
两种场景对比:
- 保留Spacer时:按钮尺寸异常膨胀,突破安全区域边界(对应截图1)
- 注释掉Spacer后:按钮立刻恢复正常大小(对应截图2)
对应的视图代码如下:
struct FighterView: View { @Bindable var fighter: Fighter var body: some View { HStack { TextField("", text: $fighter.name, prompt: Text(fighter.color.rawValue).foregroundStyle(Color.black.opacity(0.1))) .myModifiers ZStack { // 这些视图在截图中不可见 PenaltyView(color: fighter.isHansokumake ? .jSred : .jSyellow) .hidden(fighter.shido == 0 && !fighter.isHansokumake) PenaltyView(isTilted: true) .offset(x: 15, y: 0) .hidden(fighter.shido != 2 || fighter.isHansokumake) } // 就是这个Spacer,注释掉它按钮就正常了 Spacer() DoubleTapButton(tapAction: { fighter.isIppon = true }, doubleTapAction: { fighter.isIppon = false }, title: fighter.ipponString) .buttonStyle(PointButtonStyle()) DoubleTapButton(tapAction: { fighter.addWazaari() }, doubleTapAction: { fighter.removeWazaari() }, title: "\(fighter.isIppon ? 0 : fighter.wazaari)") .buttonStyle(PointButtonStyle()) } .foregroundStyle(fighter.color.primary) } }
我这项目都快收尾了,唯独这个问题卡壳好久,有没有大佬能给点提示或者解决思路呀?
备注:内容来源于stack exchange,提问作者C. Moulinet
相关产品推荐
相关产品推荐

