【问题标题】:How can I set portrait mode for the iPhone and for iPad portrait and landscape?如何为 iPhone 和 iPad 纵向和横向设置纵向模式?
【发布时间】:2020-09-17 11:43:51
【问题描述】:

我是 SwiftUI 的新手。我的问题是当 \user 使用 iPhone 启动应用程序时,他们只能在纵向模式下使用该应用程序。如果用户使用 iPad 启动应用程序,则应该可以在纵向和横向模式下使用该应用程序。我想我需要UIDevice.current.model,但是我该如何实现呢?

import SwiftUI
import UIKit

struct ContentView: View {
    @State var value_2 = 1
    @State var show_1 = false
    
    var body: some View {
        VStack {
            Button(action: {
                self.show_1.toggle()
            }) {
                    Text("Push")
                }
            .sheet(isPresented: $show_1) {
                Sheet(show_0: self.$show_1, value_1: self.$value_2)
            }
        }
    }
}

struct Sheet: View {
    @Binding var show_0: Bool
    @Binding var value_1: Int
    
    var body: some View {
        NavigationView {
            number(value_0: $value_1)
                .navigationBarTitle(Text("Enter number"), displayMode: .inline)
                .navigationBarItems(trailing: Button(action: {
                    self.show_0 = false
                }) {
                    Text("Done").bold()
            })
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

struct number: View {
    @Binding var value_0: Int
    
    var body: some View {
        Section {
            Text("Headline")
            Picker("",selection: $value_0)
                    {
                        ForEach(1..<101) { value in
                            Text("\(value)")
                }
            }
        }
        .labelsHidden()
    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    您可以使用@Environment(\.horizontalSizeClass) var sizeClass,如下所述:Changing a view’s layout in response to size classes

    这将告诉我们我们是否有一个常规或紧凑的大小类。 非常粗略:

    • 所有纵向 iPhone 都具有紧凑的宽度和常规的高度。
    • 大多数横屏 iPhone 的宽度和高度都很紧凑。
    • 横向的大型 iPhone(Plus 尺寸和 Max 设备)具有常规宽度 和紧凑的高度。
    • 两个方向的所有 iPad 都有固定的宽度和高度。

    你可以这样使用它:

    struct ContentView: View {
        @Environment(\.horizontalSizeClass) var sizeClass
    
        var body: some View {
            HStack {
                if sizeClass == .compact {
                    // compact view
                } else {
                    // ...
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2015-12-31
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多