Segmented control bar 각각 세그먼트들의 배경 색상, 글자 색상을 어떻게 바꿀수있을까요?

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 정재 이
      참가자
      • 글작성 : 4
      • 답글작성 : 11

      저는 5개의 세그먼트가 있는데, 각각의 세그먼트들의 배경 색상과 각각의 text색상을 다르게 설정해주고 싶습니다.

      구글링 결과 아래 subview를 만들어서 넣으라는 분이 있었는데, subview를 넣어보니, 현재 무엇이 select 되었는지 안보이게 되었습니다….

      var subViewOfSegment: UIView = mySegmentedControl.subviews[0] as UIView
      subViewOfSegment.tintColor = UIColor.blueColor()
      

      이미지로 만들어서 넣으라고 하시분도 있었는데, 아래의 함수를 사용하여 색상이 있을때 해당 색상의 사각형 이미지를 반환하여 넣어주라고 하셨는데, 검은색 색상만 나옵니다.

       private func imageWithColor(color: UIColor) -> UIImage {
              let rect = CGRect(x: 0.0, y: 0.0, width:  1.0, height: 1.0)
              UIGraphicsBeginImageContext(rect.size)
              let context = UIGraphicsGetCurrentContext()
              context!.setFillColor(color.cgColor);
              context!.fill(rect);
              let image = UIGraphicsGetImageFromCurrentImageContext();
              UIGraphicsEndImageContext();
              return image!
          }
      

      어떻게 설정해줄 수 있을까요?

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      음… 이게 API로 제공되는 기능이 아니라서 iOS 버전에 따라 Segmented Control의 뷰 계층구조가 달라지면 무용지물이 되거나 오류의 가능성을 항상 내포하게 됩니다.
      그래서 글 작성자가 작성할 당시 버전의 iOS에서는 동작하더라도 이전버전 혹은 이후버전에서는 유효하지 않을 수 있습니다.
      꼭 필요한 기능이라면 직접 커스텀 뷰를 만드는 것이 더 나을수도 있겠습니다.

      • 정재 이
        참가자
        • 글작성 : 4
        • 답글작성 : 11

        부족한 저에게는 커스텀뷰를 만드는것은 역부족입니다…

        • 야곰
          키 마스터
          • 글작성 : 37
          • 답글작성 : 580

          애플이 정식으로 제공하는 API로는 해결하기 어려운 부분이기 때문에 꼭 필요한 기능이 아니라면 뒤로 미뤄두는 것은 어떨까요?
          조금 더 실력을 키워서 커스텀 뷰로 구현해보거나 구조를 파악해서 스스로 해결할 수 있을때까지 다른 기초를 다져보는 것도 좋은 방법일 것 같아요.
          물론 다른 분들은 의견이 다를 수도 있으니 다른 분들 의견을 더 구해보는 것도 좋겠습니다 🙂

          이 링크의 글처럼 버전에 따라 변하는 것들이 꽤 많을 수 있습니다… ^^;

          • 이 답변은 야곰에 의해 3 years, 10 months 전에 수정됐습니다.
1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom