iOS 응용 (swift)

[iOS - swift] 디스플레이 확대/축소 옵션 대응 방법 (UIScreen.main.nativeScale)

jake-kim 2024. 10. 18. 01:40

디스플레이 확대/축소 옵션

  • 아이폰에서 Text의 크기도 동적으로 변하지만 Text가 아닌 디스플레이 자체를 확대하고 축소할 수 있는 옵션이 존재

  • 위치: 설정 > 디스플레이 및 밝기 > 디스플레이 확대/축소

디스플레이 확대/축소 기능

  • 디스플레이의 해상도의 비율은 UIScreen.main.scale로 알 수 있지만, 확대/축소했을때의 해상도는 UIScreen.main.nativeScale로 파악이 가능

ex) 디스플레이 확대/축소에서 기본으로 둔 경우

  • 확대 옵션으로 킨 경우

결과)

비교)

기본 확대
  • 확대하면 비율이 0.65625%p 증가되었으므로 약 22%가 증가됨
    • 때문에 이 확대된 해상도를 고려하여 애니메이션이나 특정한 크기에 관한 대응이 필요한 경우 scale을 nativeScale로 나눈 비율 값을 곱하여 대응이 가능

전체 코드)

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing: 4) {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")

            Color
                .clear
                .frame(height: 34)
            
            Text("UIScreen.main.scale: \(UIScreen.main.scale)")
            Text("UIScreen.main.nativeScale: \(UIScreen.main.nativeScale)")
        }
    }
}