🪴일반적인 방법
구글링을 하다보면 일반적으로 소개되는 방법은 다음과 같다.
layer를 둥글게 만들어주지 않으면 네모 모양으로 칠해지기 때문에 둥글게 깎아줘야 한다.
switch.backgroundColor = .blue
switch.layer.cornerRadius = switch.bounds.size.height / 2 (또는 16)
🪴하위 뷰에 접근하는 방법
왜 backgroundColor를 변경시키면 네모 모양으로 칠해질까에 대해서 생각해보다가 UISwitch의 구조를 살펴보고 싶어서 계층 구조를 뜯어봤다.
보니까 기본적으로 색이 들어가 있는 뷰랑 backgroundColor가 적용되는 뷰는 계층이 다른 것 같았다. 두 번째 이미지가 UISwitch의 backgroundColor만 변경시켰을 때의 모습이다. 그러니까 우리가 원하는 것처럼 layer 수정 없이 색을 변경시키고 싶다면, 첫 번째 이미지 처럼 둥근 뷰에 접근해서 색상을 변경시키면 된다.
// 하위 뷰에 직접 접근하는 방법
toggleButton.subviews.first?.subviews.first?.backgroundColor = .blue // 스위치가 off 상태일 때 배경색
toggleButton.onTintColor = .red // 스위치가 on 상태일 때 배경색
print("타원 뷰 off 상태 배경색: ", toggleButton.subviews.first?.subviews[0].backgroundColor)
🪴계층 구조를 확인하고 싶다면
View Hierarchy Debugger를 이용해보세요.
🪴스크린 샷
off - blue
on - red
'🍎 iOS & Swift' 카테고리의 다른 글
IBOutlet Collection연결 시 weak 수식어를 사용하지 않는 이유 (1) | 2022.07.11 |
---|---|
번들 아이디, Bundle Identifier (2) | 2022.07.10 |
[WWDC22] What's new in SF Symbols 4 (2) | 2022.07.06 |
[iOS] 조건문(1), if문에 대한 고찰 (5) | 2022.02.10 |
[iOS] UIWindow (0) | 2021.11.07 |