相关疑难解决方法(0)

在SwiftUI中使VStack充满屏幕的宽度

给定此代码:

import SwiftUI

struct ContentView : View {
    var body: some View {
        VStack(alignment: .leading) {
            Text("Title")
                .font(.title)

            Text("Content")
                .lineLimit(nil)
                .font(.body)

            Spacer()
        }
        .background(Color.red)
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

导致这种交互:

预习

VStack即使标签/文本组件不需要整个宽度,如何填充屏幕的宽度?

我发现的一个技巧是在结构中插入一个 HStack,如下所示:

VStack(alignment: .leading) {
    HStack {
        Spacer()
    }
    Text("Title")
        .font(.title)

    Text("Content")
        .lineLimit(nil)
        .font(.body)

    Spacer()
}
Run Code Online (Sandbox Code Playgroud)

产生所需的设计:

期望的输出

有没有更好的办法?

xcode ios swift swiftui

24
推荐指数
11
解决办法
2万
查看次数

如何在SwiftUI中使另一个视图的大小

我正在尝试重新创建Twitter iOS应用的一部分以学习SwiftUI,并且想知道如何动态地将一个视图的宽度更改为另一视图的宽度。就我而言,使下划线与“文本”视图的宽度相同。

我已附上屏幕截图,以尝试更好地解释我的意思。任何帮助将不胜感激,谢谢!

这也是我到目前为止的代码:

import SwiftUI

struct GridViewHeader : View {

    @State var leftPadding: Length = 0.0
    @State var underLineWidth: Length = 100

    var body: some View {
        return VStack {
            HStack {
                Text("Tweets")
                    .tapAction {
                        self.leftPadding = 0

                }
                Spacer()
                Text("Tweets & Replies")
                    .tapAction {
                        self.leftPadding = 100
                    }
                Spacer()
                Text("Media")
                    .tapAction {
                        self.leftPadding = 200
                }
                Spacer()
                Text("Likes")
            }
            .frame(height: 50)
            .padding(.horizontal, 10)
            HStack {
                Rectangle()
                    .frame(width: self.underLineWidth, height: 2, alignment: .bottom)
                    .padding(.leading, leftPadding)
                    .animation(.basic())
                Spacer()
            }
        } …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

16
推荐指数
2
解决办法
5298
查看次数

根据SwiftUI中的宽度计算每行的项目数

这是我上一个问题的扩展(在 SwiftUI 中使用获取视图的宽度

我需要实现一个布局,其中每行的项目数是根据它们的组合宽度动态确定的(基本上,将项目排成一行,直到它们不再适合为止)。

两个布偶

有人告诉我,使用 GeometryReader 是一种用声明性语言做某事的hacky 方式,这显然是正确的。

我也被定向到这个类似 CollectionView 的组件https://github.com/Q-Mobile/QGrid但解决方案是静态的,因为在呈现任何组件之前,行数和每行单元格的数量是一次性确定的。

我不知道如何解决这个问题,所以任何建议对我来说都非常有价值!

??????

layout xcode ios swift swiftui

8
推荐指数
1
解决办法
1046
查看次数

如何在SwiftUI中获取屏幕宽度?

我想将“图像”帧的大小调整为一个正方形,该正方形采用的屏幕宽度相同,因此高度的值(屏幕宽度)相同。

以下代码无效,因为它为图像提供了相同的视图高度。

var body: some View {
        Image("someImage")
            .resizable()
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
            .clipped()
    }
Run Code Online (Sandbox Code Playgroud)

swift swiftui

4
推荐指数
5
解决办法
465
查看次数

标签 统计

swiftui ×4

ios ×3

swift ×3

xcode ×2

layout ×1