如何在SwiftUI中将文本对齐到屏幕顶部

时间:2020-01-19 02:25:29

标签: swift swiftui

enter image description here我正在尝试将“顶部文字”与屏幕顶部对齐,但找不到解决方法。 在iPhone屏幕的“缺口”附近必须对齐“顶部文字”。

我附上了当前“热门文字”当前位置的屏幕截图,需要将其移到顶部

struct ContentView: View {
    //var newColor : [String: Double] = setColor(red:247, green:186, blue:161)
    var body: some View {
        ZStack {
            VStack(spacing: 0) {
                HStack {
                    Text("Top Text[![enter image description here][1]][1]")
                        .fontWeight(.light)
                        .multilineTextAlignment(.center)
                        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 100)
                        .font(.body)
                        .padding()

                }
                .offset(y: 0)
                .frame(minWidth: 0, maxHeight: 400, alignment: .topLeading)

                VStack {
                    Text("Sign in with Facebook")
                        .fontWeight(.light)
                        .font(.title)
                        .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 50)
                        .padding(EdgeInsets.init(top: 0, leading: 0, bottom: 0, trailing: 0))

                    Text("Sign in with Google")
                        .fontWeight(.light)
                        .font(.title)
                        .padding()
                        .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 50)
                }
            }
            .foregroundColor(Color.black.opacity(0.7))
            .padding()
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
            .offset(x: 0, y: 0)

        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
        .background(Color.orange.opacity(0.2))
        .edgesIgnoringSafeArea(.all)

    }

}

2 个答案:

答案 0 :(得分:7)

您可以在occsum之间放置一个df['count'] = df['occ'].str.extractall('(\d+)')[0].astype(int).sum(level=0) print (df) ID occ count 0 ID_123456 example=1(abc) 1 1 ID_123457 example=1(def) 1 2 ID_123458 example=1(try) 1 3 ID_123459 example=1(try) 1 4 ID_123460 example=1(try),2(test) 3 5 ID_123461 example=1(try),2(test),9(yum) 12 6 ID_123462 example=1(try) 1 7 ID_123463 example=1(try),7(test) 8 。但是,这会将其他文本推到底部。您可以在底部的Spacer()之后放置另一个HStack,以将其向上推。

这里基本上是相同的视图,但代码更少:

VStack

答案 1 :(得分:3)

这是可行的方法

enter image description here

var body: some View {
    ZStack(alignment: .top) { // << made explicit alignment to top
        HStack { // << moved this up to ZStack 
            Text("Top Text")
                .fontWeight(.light)
                .multilineTextAlignment(.center)
                .frame(minWidth: 0, maxWidth: .infinity, minHeight: 100)
                .font(.body)
        }
        .frame(minWidth: 0, maxHeight: 400, alignment: .topLeading)
        VStack(spacing: 0) {

            VStack {
                Text("Sign in with Facebook")
                    .fontWeight(.light)
                    .font(.title)
                    .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 50)
                    .padding(EdgeInsets.init(top: 0, leading: 0, bottom: 0, trailing: 0))

                Text("Sign in with Google")
                    .fontWeight(.light)
                    .font(.title)
                    .padding()
                    .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 50)
            }
        }
        .foregroundColor(Color.black.opacity(0.7))
        .padding()
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
        .offset(x: 0, y: 0)

    }
    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
    .background(Color.orange.opacity(0.2))
    .edgesIgnoringSafeArea(.all)

}