[iOS] UIUserInterfaceSizeClass 알아보기
이번 프로젝트에서 iPad 화면 분활부터 MultiWindow 지원등 여러가지를 알아보다가 소스 상으로 SizeClass 하는 코드를 정리하고자 합니다.
소스참고
// // ViewController.swift // AutoLayout_ClassSize // // Created by JW_Macbook on 2020/01/13. // Copyright © 2020 JW_Macbook. All rights reserved. // import UIKit class ViewController: UIViewController { /// 화면전환시 마다 나타낼 라벨 @IBOutlet weak var displayLb: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // 해당 정보를 호출하지 않으면, 초기값에는 해당 함수가 발동하지 않는데. // 현재 가지고 있는 가로, 세로 정보 호출해 보기. self.traitCollectionDidChange(self.traitCollection) // Size Class 값 let horizontal:UIUserInterfaceSizeClass = self.traitCollection.horizontalSizeClass let vertical:UIUserInterfaceSizeClass = self.traitCollection.verticalSizeClass if horizontal == .regular && vertical == .regular { print("이렇게도 체크 가능합니다.") } } /// 화면 사이즈 변환시 타는 함수. /// AutoLayout r:r, c:r 등 구분함. /// - Parameter previousTraitCollection: 가로, 세로 값 들어옵니다. override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) switch (traitCollection.horizontalSizeClass, traitCollection.verticalSizeClass) { case (.regular, .regular): print("화면전환 r:r 값 (iPad fullSize 가로모드, 세로모드)") self.displayLb.text = "regular, regular" case (.compact, .compact): print("화면전환 c:c 값 (iPhone 가로모드)") self.displayLb.text = "compact, compact" case (.regular, .compact): print("화면전환 r:c 값 (iPad 화면 분활시 Size에 따라 변경됨)") self.displayLb.text = "regular, compact" case (.compact, .regular): print("화면전환 c:r 값 (iPhone 세로모드)") self.displayLb.text = "compact, regular" default: break } } }
댓글
댓글 쓰기