标签: hstack

带 Wrap 的 SwiftUI HStack

是否有可能完全显示蓝色标签(当前被截断)然后自动换行?

NavigationLink(destination: GameListView()) {
  VStack(alignment: .leading, spacing: 5){
    // Name der Sammlung:
    Text(collection.name)
      .font(.headline)

    // Optional: Für welche Konsolen bzw. Plattformen:
    HStack(alignment: .top, spacing: 10){
      ForEach(collection.platforms, id: \.self) { platform in
        Text(platform)
          .padding(.all, 5)
          .font(.caption)
          .background(Color.blue)
          .foregroundColor(Color.white)
          .cornerRadius(5)
          .lineLimit(1)
      }
    }
  }
  .padding(.vertical, 10)
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此外,蓝色标签中不应有换行符:

在此处输入图片说明

这就是它最终的样子:

在此处输入图片说明

ios swift swiftui hstack

36
推荐指数
5
解决办法
1万
查看次数

SwiftUI:如何让 HStack 沿多行(如集合视图)包装子项?

我正在尝试使用 SwiftUI 重新创建基本的集合视图行为:

我有许多水平显示的视图(例如照片)。当没有足够的空间在同一行显示所有照片时,剩余的照片应换行到下一行。

下面是一个例子:

风景版 肖像

看起来可以将一个元素VStack与多个HStack元素一起使用,每个元素包含一行的照片。

我尝试使用GeometryReader和迭代照片视图来动态创建这样的布局,但它不会编译(包含声明的闭包不能与函数构建器 'ViewBuilder' 一起使用)。是否可以动态创建视图并返回它们?

澄清:

盒子/照片可以有不同的宽度(与经典的“网格”不同)。棘手的部分是我必须知道当前框的宽度才能决定它是否适合当前行,或者我是否必须开始新行。

swiftui vstack hstack

10
推荐指数
2
解决办法
4393
查看次数

SwiftUI 阻止 Divider 在 HStack 中垂直扩展

我正在使用 SwiftUI 创建类似警报弹出窗口的东西,我使用 UIHostingController 从 UIKit 代码中呈现。视图如下所示:

VStack(spacing: 0) {
    // Some text ...   

    HStack(spacing:0) {
        Button(action: self.onCancel) { Text("Cancel") }
           .padding().inExpandingRectangle().fixedSize(horizontal: false, vertical: true)

        // This divider is the problem
        Divider() // .fixedSize()

        Button(action: self.onDelete) {  Text("Delete") }
           .padding().inExpandingRectangle().fixedSize(horizontal: false, vertical: true)
    }
}.frame(minHeight: 0)
Run Code Online (Sandbox Code Playgroud)

inExpandingRectangle是我在另一个 stackoverflow 问题中发现的。它将 HStack 每一侧的文本居中。

extension View {
    func inExpandingRectangle() -> some View {
        ZStack {
            Rectangle().fill(Color.clear)
            self
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来像这样。垃圾。

在此处输入图片说明

如果我把.fixedSize()放在分隔线上,它就会这样做。并不可怕,但分隔器看起来很愚蠢,并且不会扩展到按钮的大小。

在此处输入图片说明

swiftui hstack

10
推荐指数
2
解决办法
2790
查看次数

SwiftUI ScrollView 水平 RTL 无法正常工作

我正在尝试在我的 ios 上支持 RTL 模式,该模式是使用 swiftUI 构建的,在执行此操作以更改布局方向时一切都很好:

.environment(\.layoutDirection, .rightToLeft)
Run Code Online (Sandbox Code Playgroud)

仅使用水平 ScrollView ,它无法正常工作

当我这样做时:

 ScrollView(.horizontal) {
            HStack{
                Text("b1")
                Text("b2")
                Text("b3")
            }
        } .environment(\.layoutDirection, .rightToLeft)
Run Code Online (Sandbox Code Playgroud)

项目位置将旋转,但 HSTACK 将始终保持在左侧,如下面的屏幕截图所示: 在此输入图像描述

有什么解决方案或技巧可以使其向右吗?

uiscrollview right-to-left swiftui hstack

10
推荐指数
2
解决办法
2625
查看次数

使用 SwiftUI 加载更多功能

我已经将 ScrollView 与 HStack 一起使用,现在我需要在用户最终滚动时加载更多数据。

var items: [Landmark]
Run Code Online (Sandbox Code Playgroud)

我有我在我appeding项的使用的阵列HStack使用ForEach

ScrollView(showsHorizontalIndicator: false) {
    HStack(alignment: .top, spacing: 0) {
        ForEach(self.items) { landmark in
            CategoryItem(landmark: landmark)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在不使用加载更多按钮等自定义操作的情况下,在SwiftUI 中管理更多加载的最佳解决方案是什么。

scrollview swiftui hstack

7
推荐指数
1
解决办法
3063
查看次数

SwiftUI 位置文本右下角?

有没有更好的方法在 SwiftUI 中定位文本,在下面的示例中,我将文本定位在 ZStack 的右下角,它工作正常但似乎冗长,我是否缺少更简单的方法......橙色线是仅用于调试,以便间隔在视图中可见。

代码

struct DisplayTwoView: View {
    var body: some View {
        ZStack {
            Rectangle().foregroundColor(.blue)
            Group {
                VStack {
                    Spacer().frame(width: 5).background(Color.orange)
                    HStack {
                        Spacer().frame(height: 5).background(Color.orange)
                        Text("RABBITS").fontWeight(.black)
                    }
                }
            }.padding()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

看法

在此处输入图片说明

text swiftui vstack hstack

7
推荐指数
1
解决办法
4255
查看次数

如何在swiftUI中调整HStack元素之间的间距?

我添加了spacer(minLength:5),但是我可以指定 minlenght 来指定文本之间的间距。我已经附上了一个屏幕截图,以供参考,我想减少内部hstack之间的间距。

HStack {
Image("Rhea").resizable().cornerRadius(25).frame(width: 50.0, height: 50.0)
    VStack(alignment: .leading) {
        Text("How to enjoy your life without money").bold().font(.system(size: 20))
        HStack {
            Text("Lets create")
            Spacer(minLength: 5)
            Text("3K views")
            Spacer(minLength: 5)
            Text("3 hours ago")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

ios swift swiftui vstack hstack

6
推荐指数
3
解决办法
3280
查看次数

SwiftUI - 两个单独的按钮合而为一

Xcode 11.3 (11C29).  
macOS 10.15.2.
Run Code Online (Sandbox Code Playgroud)

下面的 SwiftUI 视图中有两个按钮。一个打印“确定”,另一个打印“取消”。但是,无论按下哪个按钮,都会执行两个打印语句。 这是为什么?(我认为这一定是 SwiftUI 的 bug。)

struct ContentView: View {

    var body: some View {
        List {
            HStack {
                Button("OK") {
                    print("OK.")
                }
                Button("Cancel") {
                    print("Cancel")
                }
            }
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

(如果 theList或 theHStack被注释掉,则每个按钮仅打印其自己的语句。)

list button swiftui hstack

6
推荐指数
1
解决办法
1579
查看次数

SwiftUI:如何强制 HStack 中的特定视图位于中心

给定一个 HStack,如下所示:

        HStack{
            Text("View1")

            Text("Centre")

            Text("View2")

            Text("View3")
        }
Run Code Online (Sandbox Code Playgroud)

如何强制“中心”视图位于中心?

alignment swiftui hstack

6
推荐指数
2
解决办法
1271
查看次数

水平堆栈内的中心项目

如果水平堆栈中有 3 个项目,我想我可以这样做:

HStack{

      Text("test")

      Spacer()

      item2()

      Spacer()

      Text("test")
}
Run Code Online (Sandbox Code Playgroud)

将 item2() 置于两个文本视图之间的中心。然而,这样做的问题是 item2() 不一定总是居中,因为,可以说 Text("test") 更改为 Text("a") 或其他内容。这会导致问题,并且第二个项目并不总是位于屏幕中央。

我怎样才能使 item2() 始终居中?

谢谢

centering swift swiftui vstack hstack

3
推荐指数
1
解决办法
2538
查看次数