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

[fix] 네비게이션바 경계선 로직 수정 #369

Merged
merged 4 commits into from
Sep 7, 2024

Conversation

JinUng41
Copy link
Contributor

@JinUng41 JinUng41 commented Sep 6, 2024

🔗 연결된 이슈

📄 작업 내용

  • 네비게이션바 경계선 로직을 수정하였습니다.
구현 내용 IPhone 11 pro max
GIF

💻 주요 코드 설명

독립적인 경계선

  • 하나의 NavigationController에 접근하여, 경계선을 토글형식으로 관리하는 것이 스택으로 관리되어지는 특성상 앞뒤 화면에 매우 의존적이라는 생각이 들게 되었습니다.
  • 따라서, 아예 필요한 화면에서만 view에 경계선을 추가하여 독립적인 화면으로 존재하도록 하였습니다.
BaseViewController.swift
func addBorder() {
    let identifier = "border"
    guard view.subviews.first(where: { $0.accessibilityIdentifier == identifier }) == nil else { return }
    
    let safeArea = view.safeAreaLayoutGuide
    let border = UIView(backgroundColor: .gray2).then {
        $0.accessibilityIdentifier = identifier
    }
    
    view.addSubview(border)
    
    border.snp.makeConstraints {
        $0.top.equalTo(safeArea)
        $0.horizontalEdges.equalToSuperview()
        $0.height.equalTo(1)
    }
    
    view.bringSubviewToFront(border)
    
    view.setNeedsLayout()
    view.layoutIfNeeded()
}

그렇다면 네비게이션 컨트롤러는?

  • shadowImage 혹은 shadowColornil이 아니면 기본적으로 보여지는 시스템적인 경계선이 있었습니다.
  • 기존에 만들어 두었던 편의생성자에서 일부 로직을 수행하여, 생성될 때 필요하면 경계선이 나타나도록 하였습니다.
  • 현재의 경우는 아예 뷰컨트롤러의 view에 경계선을 추가하기 때문에 필요없게끔 코드를 수정하였습니다.
UINavigationController+.swift
extension UINavigationController {
    convenience init(rootViewController: UIViewController, isBorderNeeded: Bool) {
        self.init(rootViewController: rootViewController)
        
        let barAppearance = UINavigationBarAppearance()
        barAppearance.backgroundColor = .white
        barAppearance.shadowColor = isBorderNeeded ? .gray2 : nil
        
        navigationBar.standardAppearance = barAppearance
        navigationBar.scrollEdgeAppearance = barAppearance
    }
}

👀 기타 더 이야기해볼 점

  • 당장 생각났던 곳인 [약속 상세, 약속 추가 플로우] 에만 경계선이 보이지 않도록 수정하였습니다.
  • 추가적으로 필요한 곳이 있으면 코멘트 남겨주시면 바로 반영하겠습니다.

@JinUng41 JinUng41 added 🛠️ fix 버그나 오류 해결시 사용 💙 JinUng 걸스 토크에 미쳐보고 싶다면 labels Sep 6, 2024
@JinUng41 JinUng41 self-assigned this Sep 6, 2024
Copy link
Member

@hooni0918 hooni0918 left a comment

Choose a reason for hiding this comment

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

우와먹져요

Copy link
Member

@youz2me youz2me left a comment

Choose a reason for hiding this comment

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

굿! 고생하셨습니다 👍 독립적으로 border를 추가하는 것 너무 좋네요~~

@JinUng41 JinUng41 linked an issue Sep 7, 2024 that may be closed by this pull request
1 task
Copy link
Member

@mmaybei mmaybei left a comment

Choose a reason for hiding this comment

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

수고하셨습니다! 다만 내 모임 리스트 뷰에서 네비게이션 바가 흰 색으로 적용되지 않는 것 같습니다. (내 모임 뷰와 달리 마이페이지 뷰에서 흰 색으로 잘 나타는 이유는 뷰 자체에서 topBackgroundView를 선언하여 흰색으로 설정해두어서인 것 같구요) 코드를 봐도 뭐가 문제인지 잘 모르겠어서 ㅜㅜ 진웅 님께서 보시고 이대로 진행하는 것이 좋다고 판단되면 이후 제 뷰만 제가 새로 이슈를 파서 해결해보겠습니다

@JinUng41 JinUng41 merged commit 3414f5a into suyeon Sep 7, 2024
@JinUng41 JinUng41 deleted the fix/#368-navigationbar-border branch September 7, 2024 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠️ fix 버그나 오류 해결시 사용 💙 JinUng 걸스 토크에 미쳐보고 싶다면
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[fix] 네비게이션 바 경계선 로직 수정하기
4 participants