首页 > 解决方案 > Swift UI - 为 iPad 和 iPhone 设置视图

问题描述

我是使用 Swift UI 的新手,并且正在编写一个简单的应用程序来学习。我希望 iPad 上的视图与 iPhone 上的视图相同,但是 iPad 显示一个空白屏幕,其中视图刚刚超出范围。我尝试使用GeometryReader以下方法尝试修复:

var body: some View {
        NavigationView {
            GeometryReader { bounds in
                VStack(alignment: .center){
                    Text("Welcome to Fair Rent")
                        .font(Font.system(size: 30, design: .rounded))
                        .fontWeight(.bold)
                        .frame(width: nil)
                    Image(systemName: "person.3.fill")
                        .font(.largeTitle)
                        .padding(2)
                    Text("How many people do you live with?")
                        .font(Font.system(size:20, design: .rounded))
                        .multilineTextAlignment(.center)
                        .lineLimit(nil)
                        .padding(18.0)
                    NavigationLink(destination: FairRentView(viewModel: FairRentViewModel(Amounts(), housemates: 1)))
                    {
                        Text("      1 other person")
                            .styledLinkLabel(with: gradient)
                    }
                    NavigationLink(destination: FairRentView(viewModel: FairRentViewModel(Amounts(), housemates: 2)))
                    {
                        Text("      2 other people")
                            .styledLinkLabel(with: gradient)
                    }
                    NavigationLink(destination: FairRentView(viewModel: FairRentViewModel(Amounts(), housemates: 3)))
                    {
                        Text("      3 other people")
                            .styledLinkLabel(with: gradient)
                    }
                }
                .frame(width: bounds.size.width, height: bounds.size.height)
            }.navigationBarTitle("Fair Rent", displayMode: .inline)
        }
    }

有人可以指出如何在 Swift UI 中正确执行此操作的正确方向吗?谢谢

标签: swiftuiconstraints

解决方案


使用导航视图样式

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: DetailView()) {
                Text("Tap Me")
            }.navigationBarTitle(Text("ContentView"))
                Text("Hello, I'm a Detail View")
        }.navigationViewStyle(StackNavigationViewStyle()) 
    }
}

struct DetailView: View {
    var body: some View {
        Text("Hello, I'm a Detail View")
    }
}

平板电脑:

在此处输入图像描述

苹果手机:

在此处输入图像描述


推荐阅读