programing

Swift에서 iPhone의 화면 너비를 가져오는 방법UI?

bestprogram 2023. 7. 31. 21:36

Swift에서 iPhone의 화면 너비를 가져오는 방법UI?

이미지 프레임의 크기를 아이폰 화면의 너비와 동일한 값(화면 너비)을 사용하는 정사각형으로 조정하려고 합니다.

다음 코드는 이미지에 동일한 보기 높이를 제공하므로 작동하지 않습니다.

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

다음을 생성할 수 있습니다.UIScreen동일한 연장.예:

extension UIScreen{
   static let screenWidth = UIScreen.main.bounds.size.width
   static let screenHeight = UIScreen.main.bounds.size.height
   static let screenSize = UIScreen.main.bounds.size
}

용도:

UIScreen.screenWidth

지오메트리 판독기 사용 시도

let placeholder = UIImage(systemName: "photo")! // SF Symbols

struct ContentView: View {
    var body: some View {
        GeometryReader { geometry in
            Image(uiImage: placeholder) 
            .resizable()
            .frame(width: geometry.size.width, height: geometry.size.width, alignment: .center)
            // .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
            .clipped()
        }
    }
}

enter image description here

UIScreen.main.bounds.width 또는 .height를 사용할 수 있습니다.

.frame(
   width:UIScreen.main.bounds.width,
   height:UIScreen.main.bounds.height
)

환경 키를 사용하여 다음과 같은 솔루션을 만들었습니다.

private struct MainWindowSizeKey: EnvironmentKey {
    static let defaultValue: CGSize = .zero
}

extension EnvironmentValues {
    var mainWindowSize: CGSize {
        get { self[MainWindowSizeKey.self] }
        set { self[MainWindowSizeKey.self] = newValue }
    }
}

그런 다음 창이 생성된 위치에서 크기를 읽습니다.

var body: some Scene {
    WindowGroup {
        GeometryReader { proxy in
            ContentView()
                .environment(\.mainWindowSize, proxy.size)
        }
    }
}

마지막으로 Swift에서 창 크기를 직접 확인할 수 있습니다.UI 보기는 장치 회전 또는 MacOS의 창 크기 조정 시 동적으로 변경됩니다.

@Environment(\.mainWindowSize) var mainWindowSize

가장 간단한 방법은 이미지 크기를 조정하고 가로 세로 비율을 1.0으로 설정하는 것입니다.

var body: some View {
    Image("someImage")
       .resizable()
       .aspectRatio(1.0, contentMode: .fit)
}

언급URL : https://stackoverflow.com/questions/57727107/how-to-get-the-iphones-screen-width-in-swiftui