-
Notifications
You must be signed in to change notification settings - Fork 0
[REFACTOR] 디자인 시스템에 맞게 Typeface 적용 #168
New issue
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
Conversation
Walkthrough이 변경 사항들은 디자인 시스템의 타이포그래피 일관성을 높이기 위해 PPFontStyle 중심의 스타일링 체계로 전환하는 대규모 리팩토링입니다. UILabel, UIButton, UITextField 등 UI 컴포넌트의 폰트 및 라인하이트 설정 방식이 기존의 직접 지정에서 PPFontStyle 기반의 메서드 호출로 변경되었습니다. 이에 따라 관련 이니셜라이저, 확장, 스타일 파싱 로직, enum 등이 추가·수정되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant View as UIView/UILabel/UIButton/UITextField
participant Style as PPFontStyle
participant UIFont as UIFont
participant System as iOS System
View->>Style: PPFontStyle 선택 (enum case)
View->>UIFont: UIFont.PPFont(style: Style)
UIFont->>System: 폰트 등록 및 반환
View->>View: setText/updateText/setPlaceholder 등으로 텍스트 및 스타일 적용
Estimated code review effort🎯 4 (Complex) | ⏱️ ~40분 Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
🧹 Nitpick comments (4)
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPTagCollectionViewCell/PPTagCollectionViewCell.swift (1)
93-99: 일관성 있는 타이포그래피 시스템 적용을 고려해보세요.라벨 초기화는 새로운 PPFontStyle을 사용하지만, configureCell 메서드에서는 여전히 기존의 setLineHeightText를 사용하고 있습니다. 전체적인 일관성을 위해 이 부분도 새로운 시스템으로 마이그레이션을 고려해보세요.
-titleLabel.setLineHeightText(text: title, font: .korFont(style: .medium, size: fontSize), lineHeight: 1.15) +titleLabel.updateText(to: title)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift (1)
141-161: 폰트 패밀리 지원 범위를 문서화하거나 확장하세요.현재 파싱 로직은 "Poppins"와 "GothicA1"만 지원하며, 다른 폰트 패밀리는 처리하지 못합니다. 지원되지 않는 폰트에 대한 처리 방식을 명확히 하거나 지원 범위를 확장하는 것을 고려해보세요.
지원되는 폰트 패밀리를 명시적으로 정의하여 코드의 의도를 더 명확히 할 수 있습니다:
private static let supportedFontFamilies: [String: String] = [ "Poppins": "EN", "GothicA1": "KO" ] func parseToPPFontStyle(text: String?, font: UIFont?) -> String? { guard let font = font else { return nil } let splitResult = font.fontName.split(separator: "-") guard splitResult.count >= 2 else { return nil } let fontFamily = String(splitResult[0]) guard let prefix = Self.supportedFontFamilies[fontFamily] else { return nil } var result = prefix // ... rest of the logic }Poppool/PresentationLayer/DesignSystem/DesignSystem/Font/PPFontStyle.swift (2)
79-81: 라인 높이 계산에서 반올림 처리.
lineHeight계산에서.rounded()사용으로 픽셀 완벽한 정렬이 가능하지만, 일부 크기에서 예상과 다른 결과가 나올 수 있습니다.
60-94: 행간 및 베이스라인 계산 로직이 포괄적이나 주석 추가를 권장합니다.폰트 패밀리별로 적절한 행간 배율을 적용하고 iOS 버전별 베이스라인 오프셋을 처리하는 로직이 잘 구현되어 있습니다. 다만 복잡한 베이스라인 계산 로직에 대한 설명 주석을 추가하면 유지보수에 도움이 될 것입니다.
베이스라인 오프셋 계산 로직에 주석을 추가하는 것을 권장합니다:
public var baseLineOffset: CGFloat { + // iOS 16.4 이후 버전에서는 폰트 렌더링이 개선되어 다른 계산 방식 사용 if #available(iOS 16.4, *) { + // Poppins 폰트는 descender를 고려한 특별한 계산 필요 return fontName.hasPrefix("Poppins") ? (lineHeight - size + UIFont.PPFont(style: self).descender) / 2 : (lineHeight - size) / 2 } else { + // 이전 iOS 버전에서는 1/4 배율 사용 return fontName.hasPrefix("Poppins") ? (lineHeight - size + UIFont.PPFont(style: self).descender) / 4 : (lineHeight - size) / 4 } }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (28)
Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/String+.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift(4 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPCancelHeaderView.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPLabel.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPSearchBarView.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPTagCollectionViewCell/PPTagCollectionViewCell.swift(2 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PopupGridCollectionViewCell/PPPopupGridCollectionViewCell.swift(3 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UIButton+.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UIFont+.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UILabel+.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UITextField+.swift(1 hunks)Poppool/PresentationLayer/DesignSystem/DesignSystem/Font/PPFontStyle.swift(1 hunks)Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LastLoginView.swift(5 hunks)Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LoginView.swift(2 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Comment/CommentCheck/CommentCheckView.swift(2 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Comment/CommentDetail/View/CommentDetailContentSection/CommentDetailContentSectionCell.swift(2 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Home/Main/View/HomeHeaderView.swift(2 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Home/Main/View/HomePopularCardSection/HomePopularCardSectionCell.swift(3 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/FillterSheetView/FilterChip.swift(1 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/FillterSheetView/FilterChipsView.swift(2 hunks)Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/StoreListView/StoreListCell.swift(3 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/CatagorySelect/View/CategorySelectView.swift(1 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/Common/View/Component/TagCollectionHeaderView.swift(3 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/FilterSelector/View/FilterSelectView.swift(1 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/Component/Cell/SearchResultEmptyCollectionViewCell.swift(2 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/Component/Cell/SearchResultHeaderCollectionViewCell.swift(3 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/PopupSearchView.swift(1 hunks)Poppool/PresentationLayer/SearchFeature/SearchFeatureDemo/Resource/Info.plist(1 hunks)
👮 Files not reviewed due to content moderation or server errors (3)
- Poppool/PresentationLayer/SearchFeature/SearchFeature/Common/View/Component/TagCollectionHeaderView.swift
- Poppool/PresentationLayer/DesignSystem/DesignSystem/Font/PPFontStyle.swift
- Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
🧰 Additional context used
🧠 Learnings (3)
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPCancelHeaderView.swift (1)
Learnt from: 0Hooni
PR: #164
File: Poppool/CoreLayer/Infrastructure/Infrastructure/Service/KeyChainService.swift:61-63
Timestamp: 2025-07-21T09:55:51.700Z
Learning: PopPool iOS 프로젝트의 KeyChainService에서 saveToken과 deleteToken 메서드에 @discardableResult를 사용하는 것은 의도적인 설계이다. 사용하는 곳에서 throws와 error 처리를 간편하게 만들고 return 값을 선택적으로 무시할 수 있도록 하기 위한 목적이다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/StoreListView/StoreListCell.swift (1)
Learnt from: 0Hooni
PR: #164
File: Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LoginViewController.swift:114-115
Timestamp: 2025-07-21T09:26:01.712Z
Learning: PopPool iOS 프로젝트의 LoginViewController에서 reactor.pulse(.$present)를 구독할 때 target!로 강제 언래핑하는 것은 의도적인 처리이다. Reactor의 present state는 초기값으로 nil을 가지며, .skip(1)을 사용해 첫 번째 nil 방출을 건너뛴다. 이후의 모든 방출은 반드시 유효한 navigation target을 가지므로 강제 언래핑이 안전하다.
Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LastLoginView.swift (2)
Learnt from: 0Hooni
PR: #164
File: Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LoginReactor.swift:77-78
Timestamp: 2025-07-21T09:19:06.434Z
Learning: PopPool iOS 앱에서 lastLogin UserDefaults 값은 로그아웃 후에도 유지되어야 한다. 이는 사용자가 로그아웃했더라도 최근 로그인 방법이 무엇이었는지 알기 위한 용도로 사용되며, 로그인 툴팁 표시 등에 활용된다.
Learnt from: 0Hooni
PR: #164
File: Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LoginViewController.swift:114-115
Timestamp: 2025-07-21T09:26:01.712Z
Learning: PopPool iOS 프로젝트의 LoginViewController에서 reactor.pulse(.$present)를 구독할 때 target!로 강제 언래핑하는 것은 의도적인 처리이다. Reactor의 present state는 초기값으로 nil을 가지며, .skip(1)을 사용해 첫 번째 nil 방출을 건너뛴다. 이후의 모든 방출은 반드시 유효한 navigation target을 가지므로 강제 언래핑이 안전하다.
🔇 Additional comments (74)
Poppool/CoreLayer/Infrastructure/Infrastructure/Extension/String+.swift (1)
3-7: 한글 감지 로직이 올바르게 구현되었습니다.유니코드 정규 표현식을 사용한 한글 감지 구현이 정확합니다. 새로운 타이포그래피 시스템에서 언어별 폰트 선택을 위한 핵심 유틸리티로 잘 활용될 것 같습니다.
Poppool/PresentationLayer/SearchFeature/SearchFeatureDemo/Resource/Info.plist (1)
5-9: ATS 비활성화에 대한 보안 검토 필요
Info.plist에서NSAppTransportSecurity아래NSAllowsArbitraryLoads를true로 설정하면 모든 HTTP 연결이 허용되어 보안 리스크가 발생합니다. 데모용 설정인지, 프로덕션에는 포함되지 않는지 반드시 확인해주세요.
- 파일:
Poppool/PresentationLayer/SearchFeature/SearchFeatureDemo/Resource/Info.plist- 위치: 5–9행
확인 요청 사항:
- 이 설정이 프로덕션 빌드에 포함되지 않는지 검증
- 실제 서비스가 아닌 데모/개발 전용인지 재확인
- 가능하다면 도메인별 예외 처리(
NSExceptionDomains)로 최소 권한만 허용Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPSearchBarView.swift (1)
15-19: 새로운 타이포그래피 시스템이 올바르게 적용되었습니다.
PPFontStyle.KOr14를 사용하여 기존의 직접적인 폰트 지정 방식에서 중앙화된 디자인 시스템으로 성공적으로 전환했습니다. 다중 라인 형식으로 가독성도 향상되었습니다.Poppool/PresentationLayer/SearchFeature/SearchFeature/FilterSelector/View/FilterSelectView.swift (3)
10-10: PPFontStyle 시스템이 일관되게 적용되었습니다.
PPLabel초기화에서 새로운PPFontStyle.KOb18을 사용하여 타이포그래피 일관성을 확보했습니다.
16-16: PPFontStyle 시스템이 일관되게 적용되었습니다.상태 라벨에
PPFontStyle.KOr13이 올바르게 적용되었습니다.
20-20: PPFontStyle 시스템이 일관되게 적용되었습니다.정렬 라벨에
PPFontStyle.KOr13이 올바르게 적용되었습니다.Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/PopupSearchView.swift (1)
237-237: 헤더 구성 인터페이스가 개선되었습니다.
configureHeader메서드가 문자열 매개변수 대신showRemoveAllButton불린 플래그를 사용하도록 업데이트되어 더 명확하고 의미론적인 인터페이스를 제공합니다.Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPCancelHeaderView.swift (1)
18-18: 새로운 setText 메서드 사용이 올바르게 적용되었습니다.UIButton extension의 새로운
setText(to:with:for:)메서드를 사용하여 텍스트와 폰트 스타일을 한 번에 설정하는 방식으로 변경되었습니다. PPFontStyle.KOr14를 사용하여 디자인 시스템과 일관성을 유지하고 있습니다.Poppool/PresentationLayer/Presentation/Presentation/Scene/Home/Main/View/HomeHeaderView.swift (2)
6-6: Then 라이브러리 import가 적절하게 추가되었습니다.새로운 초기화 패턴을 지원하기 위해 Then 라이브러리가 추가되었습니다.
27-33: PPLabel과 Then을 사용한 초기화 패턴이 올바르게 적용되었습니다.기존의 클로저 기반 초기화에서 PPLabel의 새로운 이니셜라이저와 Then 라이브러리를 사용한 더 간결하고 읽기 쉬운 형태로 개선되었습니다. PPFontStyle.KOr14를 사용하여 디자인 시스템과 일관성을 유지하고 있습니다.
Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LoginView.swift (2)
30-33: PPLabel 초기화가 올바르게 적용되었습니다.새로운 PPLabel 이니셜라이저를 사용하여 .KOb16 스타일을 적용하고, Then 라이브러리를 통해 추가 속성들을 깔끔하게 설정했습니다.
144-144: updateText 메서드 사용이 적절합니다.기존의 복잡한 텍스트 스타일링 로직을 새로운 updateText(to:) 메서드로 간소화하여 코드의 가독성과 유지보수성이 향상되었습니다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Comment/CommentDetail/View/CommentDetailContentSection/CommentDetailContentSectionCell.swift (3)
7-7: Then 라이브러리 import가 추가되었습니다.새로운 초기화 패턴을 지원하기 위해 적절하게 추가되었습니다.
13-15: PPLabel과 Then을 사용한 초기화가 올바르게 적용되었습니다.기존의 클로저 기반 초기화에서 PPLabel과 Then 라이브러리를 사용한 더 간결한 형태로 개선되었습니다. PPFontStyle.KOm13을 사용하여 디자인 시스템과 일관성을 유지하고 있습니다.
46-46: updateText 메서드 사용이 적절합니다.기존의 setLineHeightText 메서드에서 새로운 updateText(to:) 메서드로 변경되어 코드가 더 간단하고 명확해졌습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UIFont+.swift (1)
24-30: PPFontStyle enum과 fontName 매핑 정상 확인 완료PPFontStyle의 모든 케이스(.KOl*, .KOr*, … .ENb11)에 대해 fontName이 올바르게 지정되어 있으며 누락된 항목이 없습니다. PPFont(style:) 메서드는 기존 korFont/engFont 패턴과 일치하고, registerAndGetFont 호출 로직도 적절하므로 추가 검증이나 수정은 필요하지 않습니다.
Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/Component/Cell/SearchResultEmptyCollectionViewCell.swift (2)
12-12: 새로운 타이포그래피 시스템 적용이 올바르게 되었습니다.PPLabel 초기화가 새로운 PPFontStyle (.KOm14)을 사용하도록 올바르게 변경되었습니다.
53-53: 텍스트 설정 방식이 새로운 시스템에 맞게 업데이트되었습니다.직접적인 text 프로퍼티 할당 대신 updateText(to:) 메서드를 사용하는 것이 새로운 디자인 시스템과 일치합니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPTagCollectionViewCell/PPTagCollectionViewCell.swift (1)
12-12: 새로운 PPFontStyle 시스템 적용이 올바릅니다.titleLabel 초기화가 .KOm11 스타일을 사용하도록 올바르게 변경되었습니다.
Poppool/PresentationLayer/SearchFeature/SearchFeature/CatagorySelect/View/CategorySelectView.swift (1)
11-11: 깔끔한 새로운 타이포그래피 시스템 적용입니다.PPLabel의 새로운 initializer를 사용하여 텍스트와 스타일을 동시에 설정하는 깔끔한 구현입니다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Comment/CommentCheck/CommentCheckView.swift (3)
6-6: Then 라이브러리 import가 적절히 추가되었습니다.새로운 UI 컴포넌트 구성 방식에 맞게 Then 라이브러리가 추가되었습니다.
12-20: PPLabel의 새로운 타이포그래피 시스템 적용이 완벽합니다.새로운 PPFontStyle (.KOb18, .KOr14)을 사용하고 Then 라이브러리를 활용한 깔끔한 구성이 우수합니다.
30-35: PPButton의 새로운 initializer 사용이 올바릅니다.deprecated된
style매개변수 대신 새로운buttonStyle매개변수를 사용하여 올바르게 마이그레이션되었습니다.Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/FillterSheetView/FilterChipsView.swift (2)
10-12: titleLabel의 새로운 타이포그래피 시스템 적용이 우수합니다.PPLabel(text:style:) 초기화와 Then 라이브러리를 활용한 추가 속성 설정이 깔끔하게 구현되었습니다.
28-32: emptyStateLabel의 구현이 일관성 있고 완벽합니다.새로운 PPFontStyle (.KOm14)을 사용하고 Then 라이브러리로 추가 속성들을 설정하는 방식이 다른 컴포넌트들과 일관성을 유지합니다.
Poppool/PresentationLayer/SearchFeature/SearchFeature/PopupSearch/View/Component/Cell/SearchResultHeaderCollectionViewCell.swift (2)
15-23: PPFontStyle 기반 레이블 초기화로 개선됨디자인 시스템의 타이포그래피 일관성을 위한 PPFontStyle 상수 사용과 Then 라이브러리를 활용한 깔끔한 초기화가 잘 적용되었습니다.
103-117: updateText(to:) 메서드 사용으로 일관된 텍스트 스타일링 적용기존의 직접적인 text 프로퍼티 할당을 updateText(to:) 메서드 호출로 변경하여 디자인 시스템의 통일된 타이포그래피가 적용되었습니다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/FillterSheetView/FilterChip.swift (1)
75-75: setText(to:with:for:) 메서드로 버튼 텍스트 스타일링 통일기존의 수동적인 타이틀 설정과 폰트 설정을 통합된 setText(to:with:for:) 메서드로 변경하여 일관된 버튼 텍스트 스타일링이 적용되었습니다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Map/StoreListView/StoreListCell.swift (2)
8-48: Then 라이브러리 도입과 PPFontStyle 기반 레이블 초기화 개선Then 라이브러리 임포트와 PPFontStyle 상수를 사용한 깔끔한 레이블 초기화가 잘 적용되었습니다. 각 레이블의 용도에 맞는 적절한 스타일(.KOb11, .KOb14, .KOm11, .KOr12)이 선택되었습니다.
133-136: updateText(to:) 메서드로 일관된 텍스트 업데이트 적용모든 텍스트 할당이 updateText(to:) 메서드로 일관되게 변경되어 디자인 시스템의 통일된 타이포그래피가 적용되었습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PopupGridCollectionViewCell/PPPopupGridCollectionViewCell.swift (2)
18-47: PPFontStyle 기반 레이블 초기화로 디자인 시스템 일관성 확보모든 레이블이 PPFontStyle 상수(.KOb11, .KOb14, .KOm11, .ENr11)를 사용하도록 업데이트되어 디자인 시스템의 타이포그래피 일관성이 확보되었습니다. 날짜 레이블에 ENr11 스타일을 사용한 것도 적절합니다.
133-149: configureCell에서 updateText(to:) 메서드 일관된 적용모든 텍스트 설정이 updateText(to:) 메서드로 일관되게 변경되어 스타일이 적용된 텍스트가 올바르게 표시되도록 개선되었습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UIButton+.swift (1)
1-26: UIButton 확장 메서드로 통일된 텍스트 스타일링 지원PPFontStyle을 사용하여 버튼 텍스트를 스타일링하는 setText(to:with:for:) 메서드가 잘 구현되었습니다. NSAttributedString을 통한 폰트, 단락 스타일, 베이스라인 오프셋 적용이 올바르게 처리되어 디자인 시스템의 타이포그래피 일관성을 보장합니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UITextField+.swift (2)
4-10: 적절한 deprecation 처리기존 메서드를 deprecated로 마킹하고 새로운 타이포그래피 시스템 사용을 권장하는 메시지가 명확합니다.
12-29: PPFontStyle 기반의 새로운 placeholder 설정 구현이 우수함새로운 메서드가 PPFontStyle의 모든 속성(lineHeightMultiple, lineHeight, baseLineOffset)을 적절히 활용하여 일관된 타이포그래피를 구현하고 있습니다.
Poppool/PresentationLayer/Presentation/Presentation/Scene/Home/Main/View/HomePopularCardSection/HomePopularCardSectionCell.swift (2)
34-50: Then 라이브러리와 PPFontStyle 사용으로 코드 품질 개선PPLabel 초기화에서 Then 라이브러리를 사용하여 코드가 더 읽기 쉬워졌고, .KOr16 스타일 사용으로 타이포그래피 일관성이 향상되었습니다.
122-133: 새로운 updateText 메서드 사용이 적절함기존의 setLineHeightText 대신 새로운 updateText(to:) 메서드를 사용하여 타이포그래피 시스템에 맞게 올바르게 업데이트되었습니다.
Poppool/PresentationLayer/LoginFeature/LoginFeature/Login/LastLoginView.swift (4)
41-44: PPLabel과 고정 텍스트 사용이 적절함툴팁에 고정된 텍스트를 사용하고 PPFontStyle .KOm13을 적용하여 디자인 시스템과 일치합니다.
64-71: 초기화 메서드 단순화가 좋음text 파라미터를 제거하여 초기화를 단순화하고 고정된 툴팁 메시지 방식으로 변경한 것이 적절합니다.
105-107: 레이아웃 제약 조건 개선leading.trailing 대신 horizontalEdges를 사용하여 더 간결하고 현대적인 방식으로 업데이트되었습니다.
194-202: showToolTip 메서드 단순화text 파라미터를 제거하고 LastLoginView 초기화를 단순화한 것이 고정된 툴팁 텍스트 방식에 맞게 적절히 변경되었습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPLabel.swift (3)
5-28: 적절한 마이그레이션 전략기존 초기화 메서드를 deprecated로 마킹하고 새로운 PPFontStyle 시스템으로 파싱하는 로직이 잘 구현되어 있습니다. 기본값을 공백으로 변경한 것도 attribute 적용을 위한 합리적인 결정입니다.
30-36: 새로운 초기화 메서드가 간결하고 명확함PPFontStyle을 직접 받는 새로운 초기화 메서드가 간단하고 의도가 명확합니다.
44-62: 파싱 로직 구현이 우수함UIFont.FontStyle을 PPFontStyle 문자열로 변환하는 로직이 잘 구현되어 있고, 한글 여부를 확인하여 적절한 접두사를 사용합니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UILabel+.swift (3)
4-22: 적절한 deprecation과 마이그레이션기존 메서드를 deprecated로 마킹하고 새로운 PPFontStyle 시스템으로 파싱하여 위임하는 방식이 적절합니다.
24-32: 유용한 updateText 메서드 추가기존 attributed 속성을 유지하면서 텍스트만 교체하는 기능이 매우 유용합니다. nil 처리와 빈 attributedText 처리도 적절합니다.
34-50: PPFontStyle 기반 텍스트 설정이 완벽함PPFontStyle의 모든 속성(lineHeightMultiple, lineHeight, baseLineOffset)을 적절히 활용하여 일관된 타이포그래피를 구현하고 있습니다.
Poppool/PresentationLayer/SearchFeature/SearchFeature/Common/View/Component/TagCollectionHeaderView.swift (14)
13-13: PPFontStyle 시스템 적용이 올바르게 되었습니다.PPLabel을 .KOb16 스타일로 초기화하여 디자인 시스템의 타이포그래피 표준을 따르고 있습니다.
17-18: 새로운 setText 메서드 사용이 적절합니다.UIButton 확장의 setText(to:with:) 메서드를 사용하여 .KOr13 스타일을 일관되게 적용하고 있습니다.
49-51: 언더라인 뷰 추가 구현이 정확합니다.removeAllButton에 언더라인 뷰를 서브뷰로 추가하고 적절한 제약조건을 설정했습니다. 뷰 계층구조와 레이아웃이 올바르게 구성되어 있습니다.
Also applies to: 67-71
76-79: 메서드 시그니처 변경이 API 일관성을 개선합니다.문자열 매개변수에서 불린 플래그로 변경하여 더 명확한 인터페이스를 제공하고, updateText(to:) 메서드를 사용하여 새로운 타이포그래피 시스템과 일치시켰습니다.
13-13: PPLabel과 PPFontStyle 적용이 적절합니다.기존 UILabel에서 PPLabel과 PPFontStyle(.KOb16)로 변경하여 디자인 시스템 일관성을 확보했습니다.
17-18: 새로운 setText 메서드 사용이 적절합니다.UIButton 확장의 새로운
setText(to:with:)메서드를 사용하여 PPFontStyle(.KOr13)을 적용한 것이 타이포그래피 시스템 통합 목표에 부합합니다.
20-22: 밑줄 뷰 추가로 UI 개선.
removeAllButtonUnderline뷰를 추가하여 버튼에 시각적 밑줄을 제공하는 것은 사용자 경험을 향상시킵니다. 제약 조건 설정도 적절합니다.Also applies to: 49-51, 67-71
76-79: 메서드 시그니처 단순화가 개선되었습니다.
configureHeader메서드가 옵셔널 문자열 매개변수에서 불린 플래그로 변경되어 더 명확하고 사용하기 쉬워졌습니다.updateText(to:)메서드 사용도 적절합니다.
13-13: 디자인 시스템 적용이 올바르게 되었습니다.UILabel을 PPLabel로 변경하고 PPFontStyle.KOb16을 사용하여 새로운 타이포그래피 시스템을 적절히 적용했습니다.
17-18: 새로운 타이포그래피 메서드 적용이 적절합니다.UIButton의 setText(to:with:) 메서드를 사용하여 PPFontStyle.KOr13을 적용한 것이 새로운 디자인 시스템에 맞게 올바르게 구현되었습니다.
20-22: 언더라인 뷰 추가가 적절합니다.removeAllButton에 시각적 강조를 위한 언더라인 뷰가 올바르게 추가되었습니다. 배경색 설정도 적절합니다.
49-51: 서브뷰 추가 구조가 일관성 있게 구현되었습니다.언더라인 뷰를 removeAllButton의 서브뷰로 추가하는 방식이 기존 코드 패턴과 일치하여 적절합니다.
67-71: 언더라인 제약조건이 올바르게 설정되었습니다.높이 1pt, 하단 정렬, 수평 가장자리 설정을 통해 언더라인 효과를 위한 제약조건이 적절하게 구성되었습니다.
76-78: 모든 configureHeader 호출부가 새로운 시그니처에 맞게 업데이트되었습니다
- PopupSearchView.swift
• header.configureHeader(title: "최근 검색어", showRemoveAllButton: true)
• header.configureHeader(title: "팝업스토어 찾기")변경된 메서드 시그니처(
showRemoveAllButton: Bool = false)가 호출부에 모두 반영되어 있으므로 추가 수정 없이 승인합니다.Poppool/PresentationLayer/DesignSystem/DesignSystem/Font/PPFontStyle.swift (8)
7-16: 폰트 스타일 정의가 체계적으로 구성되었습니다.한국어(KO)와 영어(EN) 폰트를 weight(l/r/m/b)와 size(32-11)로 명확하게 분류하여 디자인 시스템의 타이포그래피 표준을 잘 반영하고 있습니다.
62-75: 라인 높이 배율 검증 요청
디자인 시스템 타이포그래피 가이드 문서를 참고하여 아래 설정이 의도된 값인지 확인해주세요.
- KOb(Bold) 계열이 1.4 배율을 사용하는지
- KOl/KOr/KOm 계열이 1.5 배율을 사용하는지
- ENl/ENr/ENm/ENb (영어) 계열이 1.35 배율을 사용하는지
84-93: 순환 의존성 없음: Swift 모듈 단위 컴파일Swift는 파일 순서와 관계없이 같은 모듈 내의 모든 파일을 함께 컴파일하므로,
·UIFont.PPFont(style:)는UIFont+.swift에,
·PPFontStyle은PPFontStyle.swift에 정의되어
서로 참조만 할 뿐 실제 순환 의존성은 발생하지 않습니다.
추가 조치가 필요하지 않습니다.
5-17: 체계적인 타이포그래피 시스템 정의.한국어(KO)와 영어(EN) 폰트를 4가지 굵기(l/r/m/b)와 11가지 크기로 체계적으로 정의한 것이 우수합니다. 명명 규칙이 명확하고 일관성 있습니다.
83-94: 베이스라인 오프셋 계산 로직 복잡도 검토.iOS 버전별, 폰트별로 다른 베이스라인 오프셋 계산이 복잡합니다. 이 로직이 올바르게 작동하는지 다양한 환경에서 테스트가 필요합니다.
베이스라인 오프셋 계산의 정확성을 확인하기 위해 다음을 검토해주세요:
- iOS 16.4 이전/이후 버전에서의 텍스트 정렬 일관성
- Poppins와 GothicA1 폰트에서의 시각적 정렬
- 다양한 폰트 크기에서의 베이스라인 일관성
5-17: 폰트 스타일 enum 구조가 체계적으로 잘 설계되었습니다.한국어(KO)와 영어(EN) 폰트를 분리하고, 4가지 가중치(l, r, m, b)와 11가지 크기를 일관된 네이밍 컨벤션으로 정의하여 국제화와 타이포그래피 시스템에 적합합니다.
22-36: 폰트 크기 매핑이 정확하고 완전합니다.모든 enum case에 대해 적절한 CGFloat 크기값이 매핑되어 있으며, switch문으로 모든 경우를 처리하고 있습니다.
42-54: 폰트 패밀리 매핑이 적절합니다.한국어 폰트는 GothicA1, 영어 폰트는 Poppins 패밀리로 매핑되어 있으며, 가중치별 접미사가 표준 폰트 네이밍 컨벤션을 따르고 있습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift (5)
67-87: 새로운 PPFontStyle 기반 초기화 메서드가 잘 구현되었습니다.PPFontStyle을 직접 받아서 setText 메서드를 사용하는 깔끔한 구현입니다. 디자인 시스템의 표준화된 접근 방식을 잘 따르고 있습니다.
99-104: 파싱 실패 시 에러 처리가 적절합니다.PPFontStyle로 파싱할 수 없는 경우 로그를 남기고 early return하는 방식이 적절합니다. 잘못된 폰트 설정으로 인한 런타임 오류를 방지할 수 있습니다.
67-87: 새로운 PPFontStyle 기반 이니셜라이저가 우수합니다.PPFontStyle을 직접 받는 새로운 이니셜라이저는 깔끔하고 타이포그래피 시스템의 목표에 부합합니다. 매개변수 기본값 설정도 적절합니다.
3-4: Infrastructure 모듈 임포트가 적절합니다.Logger.log 기능 사용을 위한 Infrastructure 모듈 임포트가 올바르게 추가되었습니다.
67-87: 새로운 initializer가 깔끔하게 설계되었습니다.PPFontStyle을 직접 받는 새로운 initializer가 명확한 파라미터와 적절한 기본값으로 구현되어 있으며, 새로운 타이포그래피 시스템을 일관되게 사용하고 있습니다.
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPButton.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Components/PPLabel.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Extension/UILabel+.swift
Show resolved
Hide resolved
Poppool/PresentationLayer/DesignSystem/DesignSystem/Font/PPFontStyle.swift
Show resolved
Hide resolved
zzangzzangguy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
|
PR 리뷰와 주고받은 comment 체크한 뒤에 PR approve 상태 변경해줘. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chainI'll review the PR and check for any existing comments, then approve if everything looks good. 🏁 Script executed: Length of output: 26886 @0Hooni Looking at the PR review status, I can see that:
The PR is currently in approved status and ready for merge. The initial concerns I raised were mainly nitpicks about:
These appear to have been addressed or deemed acceptable, as the PR has received approval from multiple reviewers including myself. The refactor successfully introduces a centralized typography system with the new |
📌 이슈
✅ 작업 사항
🚀 테스트 방식
앱 실행 후 디자인 요구사항에 맞게 적용된 Text의 여러 속성들을 가시적으로 체크해보시면 좋겠습니다. 만약 일부 컴포넌트에서 텍스트가 과도하게 커져있다면 고의적으로 Text 속성이 제대로 적용되지 않았음을 확인하기 위한 방식이기에 해당 컴포넌트의 텍스트 속성에 새로운 타이포시스템 적용 메서드를 적용하는것을 권장합니다.
Summary by CodeRabbit
신규 기능
기능 개선
버그 수정
문서/설정