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

[#26] HandyNavigation 추가 #30

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

[#26] HandyNavigation 추가 #30

wants to merge 3 commits into from

Conversation

jysuhr
Copy link
Contributor

@jysuhr jysuhr commented Nov 29, 2024

📌 Summary

HandyNavigation을 만들었습니다.

✍️ Description

💡 PR Point

  • Safe Area 위로 Navigation의 높이를 설정하기 위해 CustomTabBar 클래스를 정의했습니다.
  • TabBarItemtitlenil이라면 아이콘 높이를 중앙에 배치되도록 했습니다.

📚 Reference

🔥 Test

HandyNavigation.mov

title이 없을 떄 아이콘을 가운데에 배치합니다.

@jysuhr jysuhr added the feat 💜 새로운 기능 구현 label Nov 29, 2024
@jysuhr jysuhr self-assigned this Nov 29, 2024
@jysuhr jysuhr changed the title Feature/#26 [#26] HandyNavigation 추가 Nov 29, 2024

/// 뷰 세팅
private func setupView() {
setValue(customTabBar, forKey: "tabBar")

Choose a reason for hiding this comment

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

tabBar의 appearance를 바꾸지 않고 UITabBarController의 tabBar 요소를 직접 갈아끼우는 방식을 사용하신 이유가 궁금합니다!

단순 사이즈만 조정하고 싶으신거라면, UITabBar의 사이즈를 조절하는 함수를 override 하는 방식으로도 가능할 것 같아서요! (아마 sizeThatFits일꺼에요)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

굳이 UITabBarController의 tabBar를 customTabBar로 갈아끼워서 높이를 조절할 필요는 없다고 생각하여 UITabBarControllerdml tabBar의 높이를 조절하는 것으로 코드를 수정했습니다!

tabBarItemAppearance.normal.iconColor = HandySemantic.iconBasicDisabled // 아이콘 색상
tabBarItemAppearance.normal.titleTextAttributes = [
.foregroundColor: HandySemantic.textBasicDisabled, // 텍스트 색상
.font: UIFont.systemFont(ofSize: 11)] // 텍스트 폰트 사이즈

Choose a reason for hiding this comment

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

미리 선언된 타이포그래피를 재사용하는 것이 좋아보여요!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

HandyFont를 사용하여 코드 수정했습니다!

Comment on lines 82 to 98
/// title이 nil이라면 imageInsets을 조정해서 image를 중앙 정렬합니다.
public func setTabBarItemImageInsets() {
viewControllers?.forEach {
if $0.tabBarItem.title == nil {
// title이 없는 경우
$0.tabBarItem.imageInsets = UIEdgeInsets(top: itemImageVerticalInset, left: 0, bottom: -itemImageVerticalInset, right: 0)
} else {
tabBarItem.imageInsets = UIEdgeInsets(
top: itemImageVerticalInset,
left: 0,
bottom: 0,
right: 0
)
}
}
}
}

Choose a reason for hiding this comment

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

특정 title만 nil이고 나머지는 아닌 경우는 엄청 드물 것 같아요!
또한, title도 nil일 수 있지만 icon도 nil일 경우도 배제하면 안될 것 같구요!

저는 HandyNavigation에 이를 조절할 수 있는 프로퍼티가 있다면 좋을 것 같아요! tabBar의 title을 설정할 때도 navigation title로 설정할 수도 있기 때문에 정말 이미지를 가운데에 놓고 싶다면 이를 결정하는 프로퍼티가 따로 있는 편이 더 편할 것 같아요.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

centerItem 프로퍼티를 생성하여 HandyNavigation 생성시 centerItem = true로 설정했을 때만 모든 tabBarItem의 title을 nil로 바꾸고 아이콘을 중앙에 배치하는 것으로 수정했습니다!

    override func viewDidLoad() {
        super.viewDidLoad()
        centerItem = false
        setViewControllers([page1, page2, page3, page4, page5], animated: false)
    }

centerItem은 기본적으로 false입니다.

Copy link

@chongin12 chongin12 left a comment

Choose a reason for hiding this comment

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

수고하셨어요~!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 💜 새로운 기능 구현
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants