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

[#12] HandyTabs & Main화면 #32

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

[#12] HandyTabs & Main화면 #32

wants to merge 13 commits into from

Conversation

chongin12
Copy link

📌 Summary

HandyTabs 요소와 Main화면 을 제작하였습니다.

✍️ Description

💡 PR Point

Tab들을 표현할 때 어떤 요소를 쓸까 고민을 많이 하였습니다. Horizontal StackView를 쓸지, CollectionView를 쓸지를요.
결국 CollectionView를 넣는 것으로 한 이유는 탭의 개수가 매우 많아졌을 때의 효율성을 따졌을 때 이 쪽이 더 나아보였습니다.

Handy에 대해서는 백그라운드를 잘 모르기 때문에 의도와 다르게 표현된 부분이 있다면 편하게 코멘트 남겨주세요~~

📚 Reference

🔥 Test

<1> 고정형 (2개, 3개)일 때

Simulator.Screen.Recording.-.iPhone.16.Pro.-.2025-01-01.at.16.36.39.mp4

<2> 가변형 (4개 이상, scrollable)일 때

Simulator.Screen.Recording.-.iPhone.16.Pro.-.2025-01-01.at.16.37.09.mp4

@chongin12 chongin12 added the feat 💜 새로운 기능 구현 label Jan 1, 2025
@chongin12 chongin12 self-assigned this Jan 1, 2025
let viewController = HansySwitchViewController()
return ("HansySwitchViewController", viewController)
}(),
][..<tabCount].map { $0 }
Copy link
Author

Choose a reason for hiding this comment

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

주어진 정적 배열 중 인자로 받는 개수까지만 표현되도록 했습니다.

Comment on lines +23 to +25
didSet {
setTitleLabel()
}
Copy link
Contributor

Choose a reason for hiding this comment

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

@invalidating 대신에 didSet을 사용한 이유가 있나요??

Copy link
Author

Choose a reason for hiding this comment

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

cell이 너무 간단해서..? 라고 말씀드릴 수 있을 것 같아요!

무효화(invalidating)를 사용하게 되면 무효화 할 대상에 맞는 setNeeds...() 함수를 부르고, 알맞은 함수를 오버라이딩 해서 똑같은 함수를 부르기에는 사용하는 프로퍼티의 개수가 많지 않다고 판단했어요!

컨벤션으로 가져가고 있다면 큰 고민 없이 사용했을 것 같은데요, UIView의 정의 형태가 아직 컴포넌트마다 통일이 안된 것 같아서 가장 보기 쉬운 형태로 작성했습니다~!!

Comment on lines +198 to +201
UIView.animate(withDuration: 0.3) {
if let selectedCell = collectionView.cellForItem(at: indexPath) as? HandyTabCell {
selectedCell.isSelected = true
}
Copy link
Contributor

Choose a reason for hiding this comment

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

애니메이션 효과가 디자인 문서에는 없었던거 같은데 맞나요??
다른 팀과 통일하지 않아도 될까요?

Copy link
Author

Choose a reason for hiding this comment

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

네!! 디자인 문서에는 없지만 애니메이션이 없는게 너무 어색해서 셀에만이라도 넣어봤습니다..!
Handy 백그라운드를 잘 모르기에 사용자 경험이 안드로이드와 통일되어야만 하는지는 잘 모르겠네요,,

Copy link
Contributor

Choose a reason for hiding this comment

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

이제까지 애니메이션이 들어가는 핸디 컴포넌트는 디자인팀에서 애니메이션 지속 시간이나 효과에 대해서 다 정의를 해주셨어요!
그래서 지금까지는 안드로이드팀과 iOS팀이 동일하게 제작해왔어서 따로 사용자 경험 통일에 대해서 이야기 해본적은 없습니다. 핸디 회의에서 한 번 얘기해보겠습니다!

사용자 경험 생각해서 애니메이션 추가한건 완전 좋은것 같아요!! 👍🏻

Comment on lines +75 to +79
titleLabel.snp.makeConstraints {
$0.leading.trailing.equalToSuperview().inset(16).priority(999)
$0.centerY.equalToSuperview()
$0.height.equalTo(48)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

priority(999)를 사용하신 이유가 궁금합니다!

Copy link
Author

Choose a reason for hiding this comment

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

디자인 스펙에서 title의 길이에 따라 cell의 width가 동적으로 바뀌어야 할 것 같다고 판단했어요! (특히 scrollable일 때요!)
이렇게 하면 오토레이어웃 경고 메세지 없이 cell의 leading과 trailing의 priority를 낮추면 cell의 width가 동적으로 결정되게 할 수 있어요!

Copy link
Contributor

Choose a reason for hiding this comment

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

오호 그렇군요! 알려주셔서 감사합니다!

Comment on lines +19 to +23
private let addingTabButton: HandyFab = {
let button = HandyFab()
button.iconImage = .add
return button
}()
Copy link
Contributor

Choose a reason for hiding this comment

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

지금 HandyFab 관련된 레이아웃 경고가 엄청 많이 뜨는 것 같은데 혹시 이거 때문일까요??

Copy link
Author

Choose a reason for hiding this comment

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

HandyFab 자체 경고인 것 같아요..!! ㅠ

Copy link
Contributor

Choose a reason for hiding this comment

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

@wjdalswl 혹시 레이아웃 경고 확인 해볼 수 있을까요?

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.

[feat] Component - Tab
2 participants