Skip to content

Instantly share code, notes, and snippets.

⭐ Total Stars: 1
➕ Total Commits: 860
🔀 Total PRs: 3
🚩 Total Issues: 1
📦 Contributed to: 1
@woozoobro
woozoobro / I'm a night 🦉
Last active August 14, 2023 00:35
Commit time
🌞 Morning 41 commits ██▏░░░░░░░░░░░░░░░░░░ 10.5%
🌆 Daytime 116 commits ██████▎░░░░░░░░░░░░░░ 29.8%
🌃 Evening 166 commits ████████▉░░░░░░░░░░░░ 42.7%
🌙 Night 66 commits ███▌░░░░░░░░░░░░░░░░░ 17.0%

커스텀한 탭바 만들기

커스텀한 탭바를 만드는 방법엔 다양한 방법들이 있습니다!

PreferenceKey를 이용해서 자식의 뷰가 업데이트 될 때, 부모의 뷰가 이 것을 알아차리고 스스로를 업뎃할 수 있게 구성해줄 수도 있고

아니면 오늘 만들어볼 SwiftUI의 기본 TabView 컴포넌트랑 함께 커스텀하게 만든 뷰를 위에 올려서 구성해줄 수도 있어요!

@woozoobro
woozoobro / NavigationStack.md
Created July 18, 2023 15:47
NavigationStack 사용해보기
@woozoobro
woozoobro / NavigationPath활용.md
Last active February 29, 2024 07:29
NavigationPath활용

지난 시간에 NavigationStack에 대한 기본적인 표현들을 알아봤습니다!

먼저 탭뷰와 함께 NavigationStack을 사용하게 될 경우를 살펴볼게요

처음에 어떤 식으로 Navigation을 사용할지 모를 때는

각각의 탭들을 네비게이션View로 감싸줬었는데 탭들이 네비게이션 된 후에도 살아있게 되더라구요

그래서 방법을 찾다가 NavigationStack을 제일 최상단으로 빼주게 되었습니다.

@woozoobro
woozoobro / Xcode 단축키.md
Created July 23, 2023 10:33
단축키 모음

파일 or 프로젝트 네비게이터

  • 커맨드 shift N : 새로운 프로젝트 만들기
  • 커맨드 N : 새로운 파일 만들기
  • 커맨드 option N : 새로운 폴더 만들기
  • 커맨드 shift J : 현재 켜져 있는 코드 창 네비게이터에서 찾기
  • 커맨드 shift O : 파일이나 Class 혹은 Struct 등등 빨리 찾고 열기
  • 커맨드 shift F : 전체 경로에서 코드 검색
  • 커맨드 F : 현재 파일에서 코드 검색
  • 커맨드 L : 라인넘버로 이동
  • 커맨드 백스페이스 : 파일 지우기
@woozoobro
woozoobro / PostSample.md
Last active October 3, 2023 06:25
SwiftUI 프로퍼티 래퍼 사용해보기

간단한 포스트를 추가하는 기능을 구현해 볼거에요. 기능을 구현하면서 State Binding ObservedObject StateObject EnvironmentObject까지 다 한번씩 써보겠습니다.

먼저 포스트 모델이랑 mock list 구성해주고

struct Post: Identifiable {
    let id = UUID()
    let username: String
@woozoobro
woozoobro / SwiftUI DateTextField.md
Last active October 19, 2023 02:53
SwiftUI에서 UIViewRepresentable을 이용해 TextField에 Picker로 값을 변경할 수 있게 해주는 컴포넌트 입니다.
import SwiftUI

class CustomUITextField: UITextField {
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(UIResponderStandardEditActions.paste(_:)) || action == #selector(UIResponderStandardEditActions.copy(_:)) || action == #selector(UIResponderStandardEditActions.cut(_:)) {
            return false
        }
        return super.canPerformAction(action, withSender: sender)
    }