We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UISegmentControl
UnderlineSegmentControl
didMoveToSuperView
titleTextAttributes
func moveUnderlineView() { let fontAttributes = titleTextAttributes(for: .normal) guard let title = titleForSegment(at: self.selectedSegmentIndex) else { return } let size = title.size(withAttributes: fontAttributes) let perSegmentWidth = self.bounds.width / CGFloat(self.numberOfSegments) // 세그먼트 별 길이 let underlineFinalXPosition = (perSegmentWidth * CGFloat(self.selectedSegmentIndex)) + (perSegmentWidth - size.width) / 2 self.underlineView.frame.origin.x = previousXPosition UIView.animate( withDuration: 0.1, animations: { self.previousXPosition = underlineFinalXPosition self.underlineView.frame.origin.x = underlineFinalXPosition } ) }
세그먼트 탭은 상위 뷰에서 rx 컨트롤 이벤트를 통해 drive하여 함수 호출
moveUnderlineView
self.layoutIfNeeded()
The text was updated successfully, but these errors were encountered:
chore: 클린 아키텍처 #1 도메인 레이어 구분
77f50f3
=== 1. Model -> 엔티티 그룹화 2. 유스케이스 추가 - 포즈 가져오기 & 포즈 업로드
No branches or pull requests
2023-10-22.12.45.57.mov
해결과정
UISegmentControl
클래스를 상속받는 커스텀UnderlineSegmentControl
정의didMoveToSuperView
라이프사이클에서 기본적인 언더라인 세그먼트 구현을 위한 기본설정 (setBackgroundImage & 서브뷰 추가)1. 세그먼트 탭 이후
titleTextAttributes
함수를 통해 텍스트의 intrinsicSize 너비값을 구한다세그먼트 탭은 상위 뷰에서 rx 컨트롤 이벤트를 통해 drive하여 함수 호출
2. 언더라인 너비 업데이트
moveUnderlineView
함수에서 사용한 것과 동일하게 텍스트 고유 사이즈를 얻고 UIView.animate 클로저에서 너비를 업데이트해준다self.layoutIfNeeded()
를 클로저에서 호출해주면 레이아웃이 자동으로 업데이트된다.The text was updated successfully, but these errors were encountered: