Post

UIKit - 기준 해상도를 활용한 기기별 UI 비율 처리하기

UIKit - 기준 해상도를 활용한 기기별 UI 비율 처리하기

iPhone은 기기별로 화면 해상도와 비율이 서로 다름.

지난 사이드 프로젝트를 개발할 때에는 화면이 얼마 되지 않아 일일이 기기별로 분기를 해줬었음.

또 다른 방법으로는 오토 레이아웃 제약을 설정할 때 비율로 값을 줘서 기기별로 제약 조건을 설정할 수 있음.

내 경우에는 iPhone 16 Pro 해상도를 기준으로 처리함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import UIKit

extension CGFloat{
    
    /// 기기별 width 비율
    var deviceWidth: CGFloat{
        let ratio = UIScreen.main.bounds.width / 402
        return self * ratio
    }
    
    /// 기기별 height 비율
    var deviceHeight: CGFloat{
        let ratio = UIScreen.main.bounds.height / 874
        return self * ratio
    }
}

사용 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import UIKit
import SnapKit

final class RegisterView: UIView {

  ...

  private func setupRegisterButton(){
    contentView.addSubview(registerButton)
        
    registerButton.snp.makeConstraints { make in
      make.top.equalTo(stackView.snp.bottom).offset(CGFloat(95).deviceHeight)
      make.bottom.equalTo(contentView.safeAreaLayoutGuide.snp.bottom).inset(20)
      make.leading.equalToSuperview().inset(20)
      make.trailing.equalToSuperview().inset(20)
      make.height.equalTo(60)
    }
  }

  ...

}

Reference

This post is licensed under CC BY 4.0 by the author.