隐式HStack的怪异表现

SwiftUI中存在一些隐式的HStack,写起来比较方便。有时会懒得写HStack。大多数情况写不写效果是一样的。不过也有些时候会有怪异的表现。

因为文档没有清楚说明,也没有源码,所以说不清到底是什么原因,只是做个记录。或许有人也遇到类似的情况,可以避坑。

swift 复制代码
struct ContentView: View {

    let string = "这是一段测试代码"

    var body: some View {

        NavigationView {

            List {

                NavigationLink {

                    Text(string)

                } label: {

                    Text(string)

                    Spacer()

                    Text("\(string.count)字")

                }

            }

            .listStyle(.sidebar)

            .padding()

        }

    }

}

这里的label是隐式的HStack,也能运行,大致情况也不差。看效果。

swift 复制代码
struct ContentView: View {

    let string = "这是一段测试代码"

    var body: some View {

        NavigationView {

            List {

                NavigationLink {

                    Text(string)

                } label: {

                    HStack {

                        Text(string)

                        Spacer()

                        Text("\(string.count)字")

                    }

                }

            }

            .listStyle(.sidebar)

            .padding()

        }

    }

}

这里的label是显式写出的HStack,看效果。

可以看出,同样是Spacer,在隐式HStack中,它的固定宽度比显式中的大。并且不能通过设置小一点的minLength来缩小这个固定的宽度。Spacer(minLength: 2),这样写也是没用的。

不知道具体的原因。反正偷懒时如果遇到怪异的表现,还是老老实实把HStack给补上。

相关推荐
茶底世界之下20 小时前
iPhone Duo 适配实战,Awaking 踩过的 8 个坑
ios·swiftui·swift
东坡肘子1 天前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
人工智能·swiftui·swift
瓦瓦gogo5 天前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
传奇开心果编程7 天前
组合优先开发范式:从汉字造字原理到声明式UI组件组合思想
android·flutter·ios·swiftui·移动开发·harmonyos·android jetpack
东坡肘子8 天前
当应用不再属于特定操作系统 -- 肘子的 Swift 周报 #159
人工智能·swiftui·swift
东坡肘子15 天前
谁是 AI-relay App 的真正威胁 -- 肘子的 Swift 周报 #158
人工智能·swiftui·swift
东坡肘子22 天前
当 Build in Public 重新转入地下 -- 肘子的 Swift 周报 #157
人工智能·swiftui·swift
OliverQiu23 天前
开源一个 macOS 小工具:集中管理 ChatGPT 的网络启动配置
macos·chatgpt·swiftui·mac·proxy·codex·dmg
传奇开心果编程1 个月前
【SwiftUI提高练中学】第9课 安全与隐私
swiftui·移动开发·swift·编程语言理论·开发范式·编程框架·声明式ui
传奇开心果编程1 个月前
【声明式UI开发实用技术学与练】第8课 状态提升与下放
学习·flutter·react native·ui·swiftui·composer