동기
진행하고 있는 프로젝트에서, 그리고 이전 프로젝트에서 저는 항상 화면 크기를 고려해서 뷰의 동적인 사이즈를 계산했습니다.
근데, 이 방식은 두 가지의 문제가 있었습니다.
1) 협업하는 개발자는 이러한 방식을 사용하지 않는다.
2) systemLayoutSizeFitting 함수를 사용하는 데에 문제가 있다.
1) 의 경우 사실 지금까지 무시해왔습니다. 각자 화면 별로 역할을 맡아왔기에, 굳이 통일성이 없다는 생각이 있었습니다.
하지만 2) 의 경우 무시할 수 없었습니다. 그래서 getRelative 코드를 삭제하는 리팩토링을 진행하려 합니다.
리팩토링

getRelative... 함수는 다음과 같이 생겼습니다. 모든 화면에 대해서 같은 크기를 보여주는 것이 아닌, 화면의 너비와 높이를 고려해 비율에 맞는 뷰를 보여주고 있었습니다.
일단 저 함수들을 지워줍니다.


난리가 났습니다.
하지만 리팩토링은 원래 난리가 나는 것 아닐까요?
차근차근 수정해주도록 합시다.

별 문제 없이 빌드가 됐고, 의외로 실제 뷰도 정상적으로 보입니다.

하지만, 오해가 있었나 봅니다.
제 폰에서 작동시키니 이런 생각이 듭니다.
'아 맞다.. 저거 때문에 비율로 계산했지..!'
이 문제를 해결하기 위해, 디자인 상의 너비를 그대로 사용하는 것이 아니라, (화면 전체 너비 - 공백) / 2 를 통해 셀의 너비를 결정하고, 비율로 높이를 설정하겠습니다.

이렇게 하면 공백은 모든 디바이스에서 같게 되고, 공백을 제외한 곳에는 셀이 딱 맞게 위치하게 될 것입니다.
하지만 이것만 바꿔주게 되면 비율상 문제가 발생할 수 있습니다.
가로 길이는 고정된 값이 아니지만, 세로 길이는 고정된 값이기 때문입니다.
따라서 셀의 높이를 비율로서 설정해주어야 합니다.

이렇게 말이죠 ,,
근데 이건 보기에 이뻐보이진 않습니다.
제가 아닌 다른 사람이 보면 눈에 들어오지 않습니다.

그래서 이렇게 코드는 좀 길어졌지만, 보는 사람이 조금 더 직관적으로 볼 수 있도록 수정했습니다.
결론
간단한 작업이었기에 ,, 딱히 특별한 뭔갈 배웠다거나 하는 것은 없습니다.
다만, 다음에 작업할 때는 이런 세세한 부분도 디자이너와 함께 이야기 할 것 같습니다.
바쁘다보니 임의로 결정하게 되는데, 디자이너와 다양한 디바이스 화면에서 어떻게 보이도록 설정하면 좋을지 이야기를 나누는게 좋다! 라는 교훈을 얻었습니다.
'iOS > Refactoring' 카테고리의 다른 글
| [UIKit/Refactoring] 홈 화면 UX 개선하기 (리사이징, 메모리 캐싱) (0) | 2024.07.27 |
|---|---|
| [UIKit/Refactoring] MyPageProfileEditViewModel 코드 개선하기 (2) (0) | 2024.07.17 |
| [UIKit/Refactoring] MyPageProfileEditViewModel 코드 개선하기 (1) (0) | 2024.07.13 |
| [UIKit/Refactoring] MyPageNotificationViewModel 코드 개선하기 (0) | 2024.07.09 |
| [UIKit/Refactoring] CollectionView Dynamic Header 개선하기 (SupplementaryView) (0) | 2024.06.29 |