[스위프트3] 화면 사이즈에 따라 비율로 구현하기
중소 IT업체에서 앱을 만들다 보니 처음에 접근하기 쉬운 안드로이드를 개발하다가 iOS에 필요성에 따라 iOS앱도 같이 개발하는 경우가 있다. 이때 별도의 비용을 들여 디자인을 해서 iOS화면 디자인을 해준다면 참으로 좋겠지만...여건이 안되는 기업들이 많다... 보통 iOS는 패드를 제외하고는 화면 3개정도만 맞춰주면 되는데 이때 비율로 개발하면 어느 폰이든 똑같은 위치에 원하는 컴포넌트를 배치할 수 있다. 물론 스위프트 내에서 자동으로 맞춰주는 부분이나 Auto Layout등 다양한 것들이 있지만... 기본적으로 내가 제공받은 Mac에 Xcode에 storyboard로 작업하기에는...너무 어려운 부분이 많다... 굉장히 느리다. 이에따라 그냥 위치랑 크기를 비율로 계산해서 때려박는 하드코딩을 사용한다. 이때 비율로 화면 크기에 맞춰 화면을 그리는 코드이다...
위처럼 디자인의 기준화면(보통 디자인된 앱 화면의 전체 width, height을 designSize에 넣고 나중에 함수 호출할때 디자인된 size로 호출하면 된다. 그러면 적어도 어느 화면이든 같은 위치에 컴포넌트들이 존재한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/**
실제사이즈에 디자인 전체 사이즈 만큼 퍼센트 계산한 결과값
- parameter size: 컴포넌트 사이즈
- parameter designSize: 디자인 기준 사이즈
- returns:
*/
static func sizePerDesignSizeToRealSize(size: CGFloat, designSize: CGFloat) -> CGFloat {
return designSize * sizePerDesignSize(size: size, designSize: designSize)
}
static func sizePerDesignSizeToRealSizeWidth(size: CGFloat) -> CGFloat {
return UIScreen.main.bounds.width * sizePerDesignSize(size: size, designSize: 디자인된 화면의 전체 기준 넓이)
}
static func sizePerDesignSizeToRealSizeHeight(size: CGFloat) -> CGFloat {
return UIScreen.main.bounds.height * sizePerDesignSize(size: size, designSize: 디자인되 화면의 전체 기준 높이)
}
| cs |
댓글
댓글 쓰기