SwiftUI iOS 14 |在 HStack 中自动展开文本框和内容

Posted

技术标签:

【中文标题】SwiftUI iOS 14 |在 HStack 中自动展开文本框和内容【英文标题】:SwiftUI iOS 14 | auto expand textbox and content around in HStack 【发布时间】:2021-02-25 21:36:02 【问题描述】:

ios14更新后,文本框不再展开,箭头不再适应不同长度的文本。 如 gif 所示,文本宽度保持不变,过长的内容会被省略号缩短。你能帮我如何更新我的代码吗?

    @State var teamName: [String] = ["blue", "red", "green", "yellow"]

    […]

    HStack(spacing: 5) 
                            Image(systemName: "arrowtriangle.left.fill")
                                .font(Font.system(size: 12 ,weight: .regular))
                            Text(teamName[selectedLeftTeam])
                                .font(Font.system(size: 24 ,weight: .bold, design: .monospaced).smallCaps())
                            Image(systemName: "arrowtriangle.right.fill")
                                .font(Font.system(size: 12 ,weight: .regular))
                        
                        .foregroundColor(Color("primaryColor")).opacity(0.2)
                    .gesture(
                            DragGesture()
                        .onChanged(
                            action in
                            self.swipeOffsetX = Double(action.translation.width * 0.75)
                        )
                        
                        .onEnded(
                            action in
                            
                            let left = self.swipeOffsetX < 30
                            let right = self.swipeOffsetX > 30
                            
                            if left  self.selectedLeftTeam += 1 
                            if right  self.selectedLeftTeam -= 1 

                            self.swipeOffsetX = 0 // reset
                        )
                        )

【问题讨论】:

【参考方案1】:

您可以使用fixedSize 让您的Text 使用尽可能多的空间:

Text(teamName[selectedLeftTeam])
    .font(Font.system(size: 24 ,weight: .bold, design: .monospaced).smallCaps())
    .fixedSize()

您也可以仅将其限制为一维 - 如果您想横向进行:

.fixedSize(horizontal: true, vertical: false)

【讨论】:

非常感谢。 .fixedSize() 完美运行!

以上是关于SwiftUI iOS 14 |在 HStack 中自动展开文本框和内容的主要内容,如果未能解决你的问题,请参考以下文章

在 HStack 中有 2 个 List/ScrollView 时,NavigationView 不会折叠 - SwiftUI

SwiftUI 文本在 HStack 中超出屏幕

如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?

在 SwiftUI 中,Picker 扩展为占据 HStack 内的整个空间

SwiftUI 用图像包装 HStack

HStack 中的 SwiftUI 按钮宽度不正确