ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS [Swift] - UISegmentedControl Background Color 변경
    iOS Develop 2022. 5. 6. 15:34
    반응형
    SegmentedControl을 이용하려다가 아무리 backgroundColor를 .clear 해줘도 계속 회색 배경으로 나오길래 검색을 계속하다가 작성하게 되었다. 

     

    결론적으로 말하면, 일단 회색은 바뀌지 않는다! clear, white를 RGB로 값을 설정해줘도 배경색이 변하지 않는다...!!

    그럼 어떻게 해야할까? 

    setBackgroundImage() 속성을 이용해야한다.

     

    setBackgroundImage()는 

    setBackgroundImage(backgroundImage: UIImage?, for: UIControl.State, barMetrics: UIBarMetrics)

    의 형태를 가지고 있다. 

     

    우리는 이 속성 중 backgroundImage: UIImage 속성을 통해 배경색을 변경해줄 것이다. 

    segmentedControl?.setBackgroundImage(UIImage(ciImage: .clear), for: .normal, barMetrics: .default)

    위와같이 코드를 작성해주면 배경색이 변경되는 것을 확인할 수 있다.

    이 때, ciImage는 Core Image 프레임워크에 포함되는 클래스인데 관련된 이미지 데이터만 있다면 CIImage 객체를 이미지 재료로 생각할 수 있다. 그래서 ciImage부분에 color 속성을 넣어준 것이다. 

     

    더 간단하게 하자면

    segmentedControl?.setBackgroundImage(UIImage(), for: .normal, barMetrics: .default)

    UIImage()만 사용하여 빈 이미지 형태만 넣어도 된다.!!

     


    물론 SegmentedControl 속성 중 backgroundColor가 있기 때문에 투명과 흰색을 제외한 다른 색으로는 변경할 수는 있었다.

    하지만, 투명과 흰색으로 설정이 되지 않던터라 정리를 해보았다. 

     


    + 2022년 05월 09일 (월) 수정 : setDividerImage

    segmentedcontrol의 배경색을 바꿔주어도 그 사이에 있는 구분선? 같은 녀석은 남아있던터라 어떻게 지울까 하다가 발견해낸 방법을 업로드 하려고 한다!

     

    segmentedControl?.setDividerImage(UIImage(), forLeftSegmentState: .selected, rightSegmentState: .normal, barMetrics: .default)

    배경색 때처럼 동일한 방법으로 진행된다. 그러나 divider는 UIImage(ciImage: .clear) 해주게 되면 텍스트까지 전부 안보이게 되는 현상이 나타나서 단순히 UIImage()로만 설정하였다. 

     

Designed by Tistory.