Skip to content
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

Feat [#2] TabBar UI 구현 #4

Merged
merged 7 commits into from
Mar 15, 2024
Merged

Feat [#2] TabBar UI 구현 #4

merged 7 commits into from
Mar 15, 2024

Conversation

kim-seonwoo
Copy link
Member

@kim-seonwoo kim-seonwoo commented Mar 14, 2024

👾 작업 내용

  • App을 실행하면 바로 TabBarView로 넘어가게 구현해 놨습니다.
  • 메인 홈 화면에서 이용되는 TabBarView를 구현하였습니다.
  • TabBarView에 구현된 enum에 따라 해당 뷰를 보여줍니다.
enum Tab: CaseIterable {
    case challengeView
    case homeView
    case myPageView
    
    @ViewBuilder
    var view: some View {
        switch self {
        case .challengeView: ChallengeView()
        case .homeView: HomeView()
        case .myPageView: MyPageView()
        }
    }
}
  • CustomTabView 에서 구체적인 TabBar의 UI를 구현 하였습니다.
  • CustomTabView 파일에 TabButton 또한 구현하였습니다.

🚀 PR Point

TabButton 관련

  • SwiftUI 공부 시 찾아본 결과 View의 body 부분의 부담을 덜어주는 것이 좋다고 합니다.
  • 따라서 공통된 부분을 TabButton으로 묶어 따로 빼주었습니다.
  • 타 레퍼런스를 보면 이와같이 관련된 view를 파일을 따로 분리하지 않고 한 파일 내에 작성하는
    경우들이 많이 보였습니다. 이 방식에 대한 의견이 궁금합니다!

CustomTabBarView

  • 선택 시와 선택 안할 시의 아이콘 색깔을 다르게 처리하였습니다.
  • 원래의 경우 아이콘 이미지의 렌더링 모드를 (.template)으로 설정하고, foreGroundColor를 변경하면 아이콘의 tint color를 손쉽게 변경 시킬 수 있습니다.
  • 하지만 챌린지 아이콘의 체크 표시가 투명이 아닌 검은 색으로 인식되어 위의 방법을 사용하면 이미지가 제대로 표현되지 않았습니다.
Simulator Screenshot - iPhone 15 Pro - 2024-03-14 at 13 08 40
  • 따라서 따로 비활성화된 색 이미지 파일을 다운 받아 이미지 이름에 "Unselected"를 덧 붙여
    버튼 클릭 시 이름에 따라 이미지가 교체되도록 구현하였습니다.
    -> 더 좋은 방식이 있을 까요?

  • contentView파일이 불필요하다고 생각합니다!

📸 스크린샷

구현 내용 스크린샷
TabBar Simulator Screenshot - iPhone 15 Pro - 2024-03-14 at 13 08 40

✅ CheckList

  • 오류 없이 빌드되는지 확인
  • 로그용 print문 제거
  • 불필요한 주석 제거
  • 코드 컨벤션 확인

🔗 Issue

Resolved #2

@kim-seonwoo kim-seonwoo added 😎선우 선우의 issue ✨FEAT 기능 구현 labels Mar 14, 2024
@kim-seonwoo kim-seonwoo added this to the 🔭2차 스프린트🪐 milestone Mar 14, 2024
@kim-seonwoo kim-seonwoo self-assigned this Mar 14, 2024
@kim-seonwoo kim-seonwoo linked an issue Mar 14, 2024 that may be closed by this pull request
Copy link
Member

@Zoe0929 Zoe0929 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다. tabBar item을 state Property로 구현한 게 신기하네요~ 스유의 세계란..
근데 브랜치명 컨벤션 지켜주세요!!

Comment on lines +15 to +22
@ViewBuilder
var view: some View {
switch self {
case .challengeView: ChallengeView()
case .homeView: HomeView()
case .myPageView: MyPageView()
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 이런 게 있군요 배워갑니다~

selectedTab.view
CustomTabView(selectedTab: $selectedTab)
}
.ignoresSafeArea(.keyboard)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ 탭바 뷰에서는 키보드가 올라올 일이 없을 것 같은데 따로 지정해두신 이유가 궁금합니다!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

만약 tabBar가 있는 homeView, challengeView, myPageView에서 키보드가 올라오면
탭바가 딸려오는걸 방지하기 위하여 넣었습니다!

예시:
https://stackoverflow.com/questions/63958912/ios-14-swiftui-keyboard-lifts-view-automatically/66006235#66006235

사실 지금은 키보드가 올라올 기능이 없어서
불필요할 것 같기도 합니다!!

@kim-seonwoo kim-seonwoo deleted the #2-TabBar branch March 15, 2024 03:27
@kim-seonwoo kim-seonwoo reopened this Mar 15, 2024
@kim-seonwoo kim-seonwoo merged commit c9f5c99 into develop Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨FEAT 기능 구현 😎선우 선우의 issue
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Feat] TabBarView 추가
2 participants