카테고리 없음

NSSegmentedControl Image Scale

jin_j_i_n 2022. 4. 5. 15:55

NSSegmentedControl 각 셀에 이미지를 넣어서 커스텀 세그먼트를 만들다가 각 이미지의 글자 폰트들이 안맞아버리는 오류가 발생했다..

 

폰트가 문제냐 세그먼트 뜯어보고 온갖 디버깅을 시도해봤지만 NSSegmentedControl 에 이미지를 세팅할때 이미지의 스케일 옵션을 잘못줘서 틀어진거였다.

정말 간단한 문제였는데 한 2~3일 해맨 오류..ㅠㅠ 잊어먹지 않기 위해 각 이미지 스케일의 옵션별 차이정도 기록하겠다.

 

 

스토리보드에서 NSSegmentedControl Scailing 옵션 변경 부분

총 4가지의 옵션이 있다.

 

테스트하기 위한 이미지는 텍스트를 NSImage로 변환하여 각 NSSegmentedCell에 setImage로 이미지를 넣어주었다.

 

의도한 커스텀 세그먼트는 위 이미지와 같다.

 

NSImageScailing

공식문서의  NSImageScailing 설명, NSCell의 프로퍼티로 보인다.

구현은 enum으로 되어있고, 총 4가지의 케이스가 있다.

 

- scaleProportionallyDown 

: 대상(NSCell)에 비해 너무 큰 경우 이미지의 가로, 세로 비율을 유지하면서 이미지를 축소한다.

 

proportionallyDown으로 옵션 설정을 했을 때

 

 

이미지화된 텍스트들이 늘어남과 줄어듬 없이 각각 동일하게 나옴을 확인할 수 있다.

 

- scaleAxesIndependently

: 대상(NSCell)에 정확히 맞도록 각 디멘션을 조정한다.

 

scaleAxesIndependently으로 옵션 설정을 했을 때

바로 일부가 늘어남을 확인할 수 있다.

왜 전부가 늘어나지 않고 일부 셀의 이미지만 늘어나는지에 대해선 정확히 원인을 찾지 못했다. 찾으면 바로 수정하여 올리도록 하겠다.

 

 

- scaleNone

: 이미지 크기를 조정하지 않는다.

 

scaleNone으로 옵션 설정을 했을 때

Big Sur 11.6에서는 동일하게 나오지만, Monterey에서는 다르게 나오는 것을 확인할 수 있었다.

아마 OS버전별로 컴포넌트의 해상도?? 같은게 달라지는 부분이 있어서 그런게 아닐까 짐작되는 부분이다..... ;ㅅ;

 

 

- scaleProportionallyUpOrDown

: 대상(NSCell) 영역 내에 머물면서 가로 세로 비율을 유지하면서 이미지를 가능한 최대 크기로 조정한다.

 

scaleProportionallyUpOrDown으로 옵션 설정을 했을때

 

가로세로로 전부 늘어나 NSSegmentedCell을 전부 채운것을 확인할 수 있다.