Skip to content

Conversation

@Hrepay
Copy link
Member

@Hrepay Hrepay commented Dec 17, 2025

#️⃣ 관련 이슈

Resolved #359

💡작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

시스템 UITabBarController 도입 및 커스텀 탭바 제거

  • 기존 커스텀 탭바(CustomTabBarView) 구현을 제거하고, 표준 UITabBarController로 대체했습니다.
  • 탭 구성, 외관 설정, 네비게이션 로직을 모두 CustomTabBarContainerController로 통합했습니다.

탭바 디자인 및 동작 개선

  • 앱 내 디자인 시스템의 폰트와 에셋을 사용하여 탭바의 색상, 아이콘, 폰트를 커스터마이징했습니다.
  • 탭 중복 선택 시의 동작(새로고침 등) 처리와, 지도 탭 선택 시의 애널리틱스 이벤트 전송 로직을 추가했습니다.

로그인 권한 제어(Gating) 및 네비게이션 로직 수정

  • 지도(Map)나 마이페이지와 같이 로그인이 필요한 탭의 접근 제어 로직을 UITabBarControllerDelegate에서 일괄 처리하도록 중앙화했습니다.
  • 변경된 탭바 구조에 맞춰 로그인 유도 알럿 및 화면 이동 로직을 업데이트했습니다.

유틸리티 개선

  • BaseViewController 초기화 시 hidesBottomBarWhenPushed 설정을 호출하도록 추가하여, 각 뷰 컨트롤러에서 탭바 가시성을 제어할 수 있도록 개선했습니다.

Simulator Screen Recording - iPhone Air - 2025-12-17 at 22 54 00

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

  • 하단 탭바부터 iOS 26 적용했습니다!

@gemini-code-assist
Copy link

Summary of Changes

Hello @Hrepay, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 기존에 수동으로 구현되었던 커스텀 탭바 시스템을 iOS의 표준 UITabBarController로 전환하여 앱의 탭바 구조를 전반적으로 개선합니다. 이를 통해 코드의 복잡성을 줄이고, 시스템이 제공하는 안정성과 기능을 활용하면서도 앱의 디자인 가이드라인에 맞춰 탭바의 외관과 동작을 유연하게 커스터마이징할 수 있도록 하였습니다. 또한, 탭 선택 시 로그인 여부 확인 및 특정 탭의 동작(새로고침, 애널리틱스) 처리 로직을 UITabBarControllerDelegate를 통해 중앙 집중화하여 관리 효율성을 높였습니다.

Highlights

  • 시스템 UITabBarController 도입: 기존의 커스텀 탭바(CustomTabBarView) 구현을 제거하고, 표준 UITabBarController를 도입하여 탭바 로직을 통합했습니다.
  • 탭바 디자인 및 동작 개선: 앱 디자인 시스템의 폰트와 에셋을 활용하여 탭바의 색상, 아이콘, 폰트를 커스터마이징하고, 탭 중복 선택 시 새로고침 및 지도 탭 선택 시 애널리틱스 이벤트 전송 로직을 추가했습니다.
  • 로그인 권한 제어 중앙화: 지도 및 마이페이지와 같이 로그인이 필요한 탭에 대한 접근 제어 로직을 UITabBarControllerDelegate에서 일괄 처리하도록 변경했습니다.
  • BaseViewController 유틸리티 개선: BaseViewController 초기화 시 hidesBottomBarWhenPushed 설정을 추가하여 각 뷰 컨트롤러에서 탭바 가시성을 제어할 수 있도록 개선했습니다.
  • 커스텀 탭바 뷰 제거: CustomTabBarView.swift 파일이 제거되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


커스텀 탭바, 이제는 시스템 품에, 깔끔한 코드.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이번 PR은 기존의 커스텀 탭바를 UITabBarController로 교체하는 중요한 리팩토링을 수행했습니다. 전반적으로 코드 구조가 개선되었고, iOS 표준 컴포넌트를 활용하여 안정성과 유지보수성이 향상되었습니다. 몇 가지 추가적인 개선 사항을 제안합니다. SnapKit import 누락으로 인한 컴파일 오류 수정이 필요하며, setupViewControllers 메서드의 중복 코드를 줄이고, 탭 인덱스에 매직 넘버 대신 enum을 사용하여 코드의 명확성을 높이는 것을 권장합니다. 또한, UIImage extension을 별도 파일로 분리하여 관리하는 것이 좋겠습니다.

Comment on lines +224 to 231
extension UIImage {
func resized(to size: CGSize) -> UIImage {
let renderer = UIGraphicsImageRenderer(size: size)
return renderer.image { _ in
self.draw(in: CGRect(origin: .zero, size: size))
}

self.tabBarView.alpha = shouldHide ? 0 : 1
self.tabBarView.isHidden = shouldHide
self.view.layoutIfNeeded()
}
}

Choose a reason for hiding this comment

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

medium

UIImage에 대한 확장은 여러 곳에서 재사용될 가능성이 높습니다. Utility/Extension과 같은 공용 폴더에 UIImage+Resize.swift와 같은 별도 파일로 분리하여 관리하는 것이 프로젝트 전체의 코드 구조와 유지보수 측면에서 더 바람직합니다.

Copy link
Member Author

Choose a reason for hiding this comment

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

이건 일단 이 파일에서만 사용하고 있기 때문에 유지하겠습니다.

Copy link
Collaborator

@Funital Funital left a comment

Choose a reason for hiding this comment

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

어라 왜 제목이 없죠??

@Hrepay Hrepay changed the title [#359] [#359] 하단 탭바 iOS 26 적용 Dec 17, 2025
@Hrepay Hrepay merged commit 5c18a4b into develop Dec 17, 2025
@Hrepay Hrepay deleted the feat/#359 branch December 17, 2025 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 하단 탭바 iOS 26 도입

3 participants